Forked from: osamX's ワンダフルクエスト diff:361 ワンダフルクエスト with Google Maps API osamX forked:5favorite:9lines:181license : MIT License modified : 2010-01-22 01:05:44 Embed Tweet <?xml version="1.0" encoding="utf-8"?> <!-- // forked from Google Maps API for Flash Example // forked from ワンダフルクエスト Copyright 2008 Google Inc. Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 --> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <maps:Map xmlns:maps="com.google.maps.*" id="map" mapevent_mapready="WonderflQuest(event)" width="100%" height="100%" /> <mx:Script> <![CDATA[ /** * 思いついたから作ってみた。勢いだけで作ったからソースコード汚いです。 */ import flash.display.*; import flash.events.*; import flash.geom.Point; import flash.net.URLRequest; import flash.system.*; import com.google.maps.Map; import com.google.maps.LatLng; import com.google.maps.styles.StrokeStyle; import com.google.maps.MapEvent; import com.google.maps.overlays.Marker; import com.google.maps.overlays.MarkerOptions; import com.google.maps.wrappers.EventDispatcherWrapper; import mx.core.UIComponent; private const SIZE:Number = 465; private const SCALE:Number = 3; private const SPEED:Number = 0.000008; private const MAPSIZE:uint = 16; private const FLDSIZE:uint = 48; private var yuusha:Sprite; private var yuushaPos:Point; private var frameCount:Number = 0; private var keyFlags:Array = [false, false, false, false]; private var treasureBmd:BitmapData; private var mode:int = 0; private var container:UIComponent; public function WonderflQuest(e:Event = null):void { //create yuusha container= new UIComponent(); addChild(container); yuusha = new Sprite(); createYuusha(); changeDirection(0); container.scaleX = container.scaleY = SCALE; container.x = container.y = (SIZE - FLDSIZE) / 2; container.addChild(yuusha); yuushaPos = new Point(135.525855, 34.687353); //load image for marker Security.loadPolicyFile("http://flash-scope.com/wonderfl/crossdomain.xml"); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void { treasureBmd= new BitmapData(16, 16); treasureBmd.draw(loader); mode = 1; }); loader.load(new URLRequest("http://flash-scope.com/wonderfl/WonderflQuest/map/treasure.png"), new LoaderContext(true)); this.map.setCenter(new LatLng(yuushaPos.y, yuushaPos.x), 19); stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function createMarker(xx:Number, yy:Number):void { var bmp:Bitmap = new Bitmap(treasureBmd); bmp.scaleX = bmp.scaleY = 3; var marker:Marker = new Marker( new LatLng(xx, yy), new MarkerOptions({ iconAlignment: MarkerOptions.ALIGN_BOTTOM | MarkerOptions.ALIGN_HORIZONTAL_CENTER ,icon: bmp })); this.map.addOverlay(marker); } private function onEnterFrame(event:Event):void { if (mode == 1) { //image loaded createMarker(34.687022136844746, 135.5257612466812); createMarker(34.68799917110571, 135.5254527926445); mode = 2; } if (frameCount++ > 10) { frameCount = 0; walk(); } switch(true) { case keyFlags[0]: yuushaPos.y -= SPEED; changeDirection(0); moveMap(); break; case keyFlags[1]: yuushaPos.y += SPEED; changeDirection(1); moveMap(); break; case keyFlags[2]: yuushaPos.x -= SPEED; changeDirection(2); moveMap(); break; case keyFlags[3]: yuushaPos.x += SPEED; changeDirection(3); moveMap(); break; } } private function onKeyDown(event:KeyboardEvent):void { switch(event.keyCode) { case 40: case 83: keyFlags[0] = true; } switch(event.keyCode) { case 38: case 87: keyFlags[1] = true; } switch(event.keyCode) { case 37: case 65: keyFlags[2] = true; } switch(event.keyCode) { case 39: case 68: keyFlags[3] = true; } } private function onKeyUp(event:KeyboardEvent):void { switch(event.keyCode) { case 40: case 83: keyFlags[0] = false; } switch(event.keyCode) { case 38: case 87: keyFlags[1] = false; } switch(event.keyCode) { case 37: case 65: keyFlags[2] = false; } switch(event.keyCode) { case 39: case 68: keyFlags[3] = false; } } private function moveMap():void { this.map.setCenter(new LatLng(yuushaPos.y, yuushaPos.x)); } public var direction:int = 0; private var walkFlag:Boolean = true; private var yuushaImages:Array = []; public function createYuusha():void { for (var i:uint = 0; i < 8; i++) { var loader:Loader = new Loader(); loader.load(new URLRequest(ImageURL[i]), new LoaderContext(true)); yuushaImages.push(loader); if(i) yuushaImages[i].visible = false; container.addChild(yuushaImages[i]); } } private const ImageURL:Array = [ "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaF1.png", "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaF2.png", "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaB1.png", "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaB2.png", "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaL1.png", "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaL2.png", "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaR1.png", "http://flash-scope.com/wonderfl/WonderflQuest/yuusha/yuushaR2.png" ]; public function walk():void { walkFlag = !walkFlag; for (var i:uint = 0; i < 8; i++) { if (i == 2*direction+int(walkFlag)) yuushaImages[i].visible = true; else yuushaImages[i].visible = false; } } public function changeDirection(num:int):void { direction = num; for (var i:uint = 0; i < 8; i++) { if (i == 2*direction+int(walkFlag)) yuushaImages[i].visible = true; else yuushaImages[i].visible = false; } } ]]> </mx:Script> </mx:Application> Code Fullscreen Preview Fullscreen hacker_xdv5g.. 178ep3 shevchenko yamat siouxcitizen.. Nao_u ongaeshi a440hlz : beautiflgoogle clockmaker : ワンダフルクエストGoogle Maps APIと連携 beautifl google ワンダフルクエスト visible direction loader Capabilities.version addEventListener Loader Event.COMPLETE load draw URLRequest BitmapData Event uint int sort new page view favorite forked pv0 forked from: ワンダフルクエスト with Go.. hacker_jm8cvh8f forked:0 favorite:0lines:182 (diff:1) pv0 forked from: ワンダフルクエスト with Go.. hacker_n9mn0q8z forked:0 favorite:0lines:182 (diff:1) pv321 forked from: ワンダフルクエスト with Go.. hacker_cd9hfsje forked:0 favorite:1lines:182 (diff:7) pv0 forked from: ワンダフルクエスト with Go.. kac forked:0 favorite:0lines:182 (diff:1) pv155 forked from: ワンダフルクエスト with Go.. vasari forked:0 favorite:0lines:182 (diff:1)