我尝试在Flex中为我用Flash编写的项目做preloder。 我是在这个网站的帮助下做到的 link text 我的Flash项目在主类中有下一个名为Game
的源代码stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);
private function keyDown(event:KeyboardEvent) {
if (event.keyCode == 81 && q_was_push == false) q_was_push = true;
if (event.keyCode == 81) press_q = true;
if (event.keyCode == 65) press_a = true;
if (event.keyCode == 83) press_s = true;
if (event.keyCode == 32) press_space = true;
} ...
当我接受Flex制作的新swf文件时,我有错误 TypeError:错误#1009:无法访问空对象引用的属性或方法。 在Game()
如果我发表评论
//stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
//stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);
Flex应用程序工作,但Flash应用程序不响应按钮
请如何一起制作预装载器和工作按钮
答案 0 :(得分:6)
在将显示对象添加到显示列表之前,stage
属性将为null。收听addedToStage事件并从那里添加关键监听器。
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
function onAddedToStage(e:Event):void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);
}
答案 1 :(得分:2)
任何时候你需要访问舞台,让类听它/在构造函数中检查它,并让你的init函数成为处理程序。
package
{
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author Brian Hodge
*/
public class SomeClass extends Sprite
{
public function SomeClass()
{
if (stage) _init();
else addEventListener(Event.ADDED_TO_STAGE, _init);
}
private function _init(e:Event = null):void
{
//You may now access the stage property of the DisplayObject.
stage.addEventListener(Event.RESIZE);
}
}
}