无法访问flashDevelop中的MovieClip属性
我知道我做错了一些事情。在我的控制中,我有控制我的英雄的keydown事件。截至目前,我正试图旋转我的英雄,但他拒绝转身。以下是我的英雄类,我的控制类和gameobject类。几乎所有的类都与控件类相关联。无法访问flashDevelop中的MovieClip属性
package com.Objects
{
import com.Objects.GameObject;
/**
* ...
* @author Anthony Gordon
*/
[Embed(source='../../../bin/Assets.swf', symbol='OuterRim')]
public class Hero extends GameObject
{
public function Hero()
{
}
}
}
这是我的Controls类。这是我试图旋转我的英雄的班,但他没有。 keydown事件确实有效,因为我追踪它。
package com.Objects
{
import com.Objects.Hero;
import flash.events.*;
import flash.display.MovieClip;
/**
* ...
* @author Anthony Gordon
*/
public class Controls extends GameObject
{
private var aKeyPress:Array;
public var ship:Hero;
public function Controls(ship:Hero)
{
this.ship = ship;
IsDisplay = false;
aKeyPress = new Array();
engine.sr.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
engine.sr.addEventListener(KeyboardEvent.KEY_UP,keyUpListener);
}
private function keyDownListener(e:KeyboardEvent):void {
//trace("down e.keyCode=" + e.keyCode);
aKeyPress[e.keyCode] = true;
trace(e.keyCode);
}
private function keyUpListener(e:KeyboardEvent):void {
//trace("up e.keyCode=" + e.keyCode);
aKeyPress[e.keyCode]=false;
}
override public function UpdateObject():void
{
Update();
}
private function Update():void
{
if (aKeyPress[37])//Key press left
ship.rotation += 3,trace(ship.rotation); ///DOESNT ROtate
}//End Controls
}
}
这里是游戏对象类
package com.Objects
{
import com.Objects.Engine;
import com.Objects.IGameObject;
import flash.display.MovieClip;
/**
* ...
* @author Anthony Gordon
*/
public class GameObject extends MovieClip implements IGameObject
{
private var isdisplay:Boolean = true;
private var garbage:Boolean;
public static var engine:Engine;
public var layer:Number = 0;
public function GameObject()
{
}
public function UpdateObject():void
{
}
public function GarbageCollection():void
{
}
public function set Garbage(garb:Boolean):void
{
garbage = garb;
}
public function get Garbage():Boolean
{
return garbage
}
public function get IsDisplay():Boolean
{
return isdisplay;
}
public function set IsDisplay(display:Boolean):void
{
isdisplay = display;
}
public function set Layer(l:Number):void
{
layer = l;
}
public function get Layer():Number
{
return layer
}
}
}
看起来你keyUpListener
和keyDownListener
方法不调用UpdateObject
功能。
我和Ross在一起,我会确认engine.sr实际上正在调度事件..也不依赖Bubbling? – WORMSS 2011-09-16 16:03:58
尝试在stage
而不是engine.sr
(不知道那是什么)
聆听您KeyboardEvent
如果你把它们放在比台上其他任何你需要点击特定的事情先说说它集中了活动工作。
此外,该行:
ship.rotation += 3,trace(ship.rotation);
在
Control
类
看起来有点破。
我认为这条线相同,但事实证明它是有效的语法。根本没有想法。 – 2010-02-15 16:14:49
是的,它的有效性,我使用相同的技术,我真的很少使用for循环。 'for(var i:uint = 0,len:uint = myArray.length; i
我猜你已经来自C/C++/C#背景?在包名,方法和getter/setter中看到大写字母非常陌生。只有我看到在AS3环境中有一个C#编码员涉猎了。 – WORMSS 2011-09-16 16:01:41