Tile mapping test makc3d forked:2favorite:19lines:82license : see code comments modified : 2010-07-02 11:04:42 share Tweet package { import flash.display.BitmapData; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.ShaderFilter; import flash.geom.Point; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.system.LoaderContext; import flash.utils.ByteArray; /** * Tile mapping test. * Hold left mouse button down to pan, wheel to zoom. * @author makc * @license WTFPLv2 */ public class Test4 extends Sprite { public function Test4 () { x = y = (465 - 401) / 2; // load maze image var loader:Loader = new Loader; loader.contentLoaderInfo.addEventListener (Event.COMPLETE, onMazeLoaded); loader.load (new URLRequest (/*"maze.gif"*/"http://assets.wonderfl.net/images/related_images/3/33/3314/3314c15f8a2b2a7b4a293733e6c1b9e2fe6867c9"), new LoaderContext (true)); } public function onMazeLoaded (e:Event):void { var info:LoaderInfo = LoaderInfo (e.target); info.removeEventListener (Event.COMPLETE, onMazeLoaded); addChild (info.content); // load tiles image var loader:Loader = new Loader; loader.contentLoaderInfo.addEventListener (Event.COMPLETE, onTilesLoaded); loader.load (new URLRequest (/*"tiles.gif"*/"http://assets.wonderfl.net/images/related_images/4/4b/4bb8/4bb8f8e6f1c88eb42087484c9dca50a2f20f78a4"), new LoaderContext (true)); } public var tiles:BitmapData; public function onTilesLoaded (e:Event):void { var info:LoaderInfo = LoaderInfo (e.target); info.removeEventListener (Event.COMPLETE, onTilesLoaded); tiles = info.content ["bitmapData"]; // load tile mapping shader var loader:URLLoader = new URLLoader; loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener (Event.COMPLETE, onShaderLoaded); loader.load (new URLRequest (/*"tmap.pbj.gif"*/"http://assets.wonderfl.net/images/related_images/b/b0/b05c/b05cec703b5737e28c3f6cc15325fe3f5b88b955")); } public var filter:ShaderFilter; public function updateFilter ():void { filters = [ filter ]; } public function onShaderLoaded (e:Event):void { var loader:URLLoader = URLLoader (e.target); loader.removeEventListener (Event.COMPLETE, onShaderLoaded); // skip some bytes (for wonderfl) var loadedData:ByteArray = ByteArray (loader.data); var shaderData:ByteArray = new ByteArray; loadedData.position = 1939; loadedData.readBytes (shaderData, shaderData.length, loadedData.bytesAvailable); // make filter var shader:Shader = new Shader (shaderData); shader.data.tiles.input = tiles; filter = new ShaderFilter (shader); updateFilter (); // wire controls stage.addEventListener (MouseEvent.MOUSE_WHEEL, onMouseWheel); stage.addEventListener (MouseEvent.MOUSE_DOWN, onMouseDown); stage.addEventListener (MouseEvent.MOUSE_UP, onMouseUp); } public function onMouseWheel (e:MouseEvent):void { var area:Array = filter.shader.data.zoomArea.value; var delta:Number = ((e.delta > 0) ? 0.05 : -0.05) * area [2]; area [0] -= delta; area [2] += 2 * delta; area [1] -= delta; area [3] += 2 * delta; updateFilter (); } public function onMouseDown (e:MouseEvent):void { addEventListener (Event.ENTER_FRAME, onEnterFrame); } public function onMouseUp (e:MouseEvent):void { removeEventListener (Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame (e:Event):void { var area:Array = filter.shader.data.zoomArea.value; var delta:Point = new Point (x + mouseX - 465 / 2, y + mouseY - 465 / 2); delta.normalize (0.02 * (area [2] + area [3])); area [0] += delta.x; area [1] += delta.y; updateFilter (); } } } Code Fullscreen Preview Fullscreen xui tkinjo siouxcitizen.. t_matsuda paq zendenmushi skn alumican_net.. nanlow matsu4512 clockmaker _ueueueueue o8que motikawa_rgm.. Lam4o : mappingMaze,tilegreat layola : map test sr_forest : generator mrKaizen : mappamapstilezoom shaman : generatormazetiletile generator Maze, generator mappa mapping maps maze tile zoom delta MouseEvent.COMPLETE shader ByteArray ShaderFilter filter readBytes target bytesAvailable MouseEvent.MOUSE_WHEEL MouseEvent.ENTER_FRAME MouseEvent position normalize data URLRequest LoaderContext filters removeEventListener MouseEvent.MOUSE_UP sort new page view favorite forked pv0 forked from: Tile mapping test.. Lam4o forked:0 favorite:0lines:82 (diff:91) pv45 forked from: Tile mapping test.. hacker_f21vgseo forked:1 favorite:0lines:82 (diff:91)