as3 的stage 的问题
FirstAnimation.as中package{importflash.display.Sprite;importflash.events.Event;publicc...
FirstAnimation.as 中
package
{
import flash.display.Sprite;
import flash.events.Event;
public class FirstAnimation extends Sprite
{
private var ball:Sprite;
public function FirstAnimation()
{
init();
}
private function init():void
{
ball = new Sprite();
addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.x = 20;
//注意这一句!!!一加上就出错
ball.y = Stage.stageHeight / 2;
ball.y=50;
ball.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void
{
ball.x++;
}
}
}
text1.fla中
var a:FirstAnimation=new FirstAnimation();
addChild(a);
输出中弹出的:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at FirstAnimation/init()
at FirstAnimation()
at text001_fla::MainTimeline/frame1()
那一句是 stage 是小写的
ball.y = stage.stageHeight / 2; 展开
package
{
import flash.display.Sprite;
import flash.events.Event;
public class FirstAnimation extends Sprite
{
private var ball:Sprite;
public function FirstAnimation()
{
init();
}
private function init():void
{
ball = new Sprite();
addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.x = 20;
//注意这一句!!!一加上就出错
ball.y = Stage.stageHeight / 2;
ball.y=50;
ball.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(event:Event):void
{
ball.x++;
}
}
}
text1.fla中
var a:FirstAnimation=new FirstAnimation();
addChild(a);
输出中弹出的:
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at FirstAnimation/init()
at FirstAnimation()
at text001_fla::MainTimeline/frame1()
那一句是 stage 是小写的
ball.y = stage.stageHeight / 2; 展开
2个回答
展开全部
完善版本:
package {
import flash.display.Sprite;
import flash.events.Event;
public class FirstAnimation extends Sprite {
private var ball:Sprite;
public function FirstAnimation() {
init();
}
private function init():void {
ball= new Sprite();
addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.x = 20;
ball.addEventListener(Event.ADDED_TO_STAGE,b);
//注意这一句!!!一加上就出错
function b() {
ball.y = stage.stageHeight / 2;
}
ball.addEventListener(Event.ENTER_FRAME, onEnterFramepppp);
}
private function onEnterFramepppp(event:Event):void {
ball.x++;
}
}
}
这是我给你做的两处修改:
ball.addEventListener(Event.ADDED_TO_STAGE,b);
//注意这一句!!!一加上就出错
function b() {
ball.y = stage.stageHeight / 2;
}
第二处:
ball.addEventListener(Event.ENTER_FRAME, onEnterFramepppp);
}
private function onEnterFramepppp(event:Event):void {
ball.x++;
总结:一定要在addChild完成以后,通过实例a调用stage。这里ADDED_TO_STAGE正好解决了这个问题
package {
import flash.display.Sprite;
import flash.events.Event;
public class FirstAnimation extends Sprite {
private var ball:Sprite;
public function FirstAnimation() {
init();
}
private function init():void {
ball= new Sprite();
addChild(ball);
ball.graphics.beginFill(0xff0000);
ball.graphics.drawCircle(0, 0, 40);
ball.x = 20;
ball.addEventListener(Event.ADDED_TO_STAGE,b);
//注意这一句!!!一加上就出错
function b() {
ball.y = stage.stageHeight / 2;
}
ball.addEventListener(Event.ENTER_FRAME, onEnterFramepppp);
}
private function onEnterFramepppp(event:Event):void {
ball.x++;
}
}
}
这是我给你做的两处修改:
ball.addEventListener(Event.ADDED_TO_STAGE,b);
//注意这一句!!!一加上就出错
function b() {
ball.y = stage.stageHeight / 2;
}
第二处:
ball.addEventListener(Event.ENTER_FRAME, onEnterFramepppp);
}
private function onEnterFramepppp(event:Event):void {
ball.x++;
总结:一定要在addChild完成以后,通过实例a调用stage。这里ADDED_TO_STAGE正好解决了这个问题
展开全部
这是因为:
FirstAnimation刚刚被实例化的时候还没有被放到舞台上,只有addChild(a);这句执行后,FirstAnimation的实例才访问的到stage。
你应该保持这样的代码习惯,也可以叫做格式吧:
public function FirstAnimation():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//这里添加你原来的代码
}
FirstAnimation刚刚被实例化的时候还没有被放到舞台上,只有addChild(a);这句执行后,FirstAnimation的实例才访问的到stage。
你应该保持这样的代码习惯,也可以叫做格式吧:
public function FirstAnimation():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//这里添加你原来的代码
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询