今天在写一个ipad游时,出现了一个错误,可能以前是做flash的原因,对这个方法的应用不是很多,所以不明白,其实很简单:
我写了一个建能量条的一个类JumpPower.as在里面写了一个keyboardEvent的事件侦听,但是要在主程序上控制键盘事件,那只能写上stage.addEventListener(KeyboardEvent.KEY_DOWN,ondown);然后我在主程序类上实例化了一个能量条,然后运行起来,悲剧了报错:
结果一个是stage为null然后在JumpPower.as中加上一句.this.addEventLitener(Event.ADD_TO_STAGE,on);在on函数里面再写上stage.addEventListener(KeyboardEvent.KEY_DOWN,ondown);然后运行OK
主类:
package
{
import com.utils.game.*;
import flash.display.Sprite;
[SWF(width=914,height=700,frameRate=60)]
public class Skater extends Sprite
{
private var A:JumpPower;
public function Skater()
{
stage.focus=stage;
A=new JumpPower();
A.x=600;
A.y=10;
this.addChild(A);
A.KeyStues;
trace(A.KeyStues);
}
}
}
JumpPower.as
package com.utils.game
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
public class JumpPower extends MovieClip
{
private var JumpPowerDemo:PowerArea;
private var LinePos:Number;
public var KeyStues:String;
public function JumpPower()
{
init();
}
private function init():void
{
JumpPowerDemo=new PowerArea();
this.addChild(JumpPowerDemo);
JumpPowerDemo.Power.PowerLine.width=0;
LinePos=0;
KeyStues="keyup";
trace(KeyStues);
if(stage==null){
this.addEventListener(Event.ADDED_TO_STAGE,ontostage);
}//关键点
JumpPowerDemo.Power.addEventListener(Event.ENTER_FRAME,onchange);
}
private function ontostage(e:Event):void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,onKeyUp);
}
private function onKeyDown(e:KeyboardEvent):void
{
if(e.keyCode==32){
KeyStues="keydown";
trace("go");
}
}
private function onKeyUp(e:KeyboardEvent):void
{
KeyStues="keyup";
}
private function onchange(e:Event):void
{
if(KeyStues=="keydown"){
e.currentTarget.PowerLine.width+=4;
if(e.currentTarget.PowerLine.width>=260){
e.currentTarget.PowerLine.width=260;
}
}else if(KeyStues=="keyup"){
e.currentTarget.PowerLine.width-=4;
if(e.currentTarget.PowerLine.width<=0){
e.currentTarget.PowerLine.width=0;
}
}
}
}
}
浙公网安备 33010602011771号