1

一位好朋友向我推荐了这个网站,它看起来真的很有用!我在动作脚本方面有点无耻的菜鸟,经过 3 天的教程和建议,我遇到了障碍。

我已经设法使用一种叫做 AS3glue 的东西将一个传感器连接到一个 arduino 与闪存对话。它起作用了,当我为传感器读取 0 的条件设置跟踪(“叶子”)时,我得到了“叶子”这个词的打印输出。但是,我希望程序在满足此条件时使图形出现在屏幕上,而不仅仅是跟踪某些内容。

我试图让程序在每次满足条件时在屏幕上的随机位置生成一个名为“Enemy”的库对象。它被称为敌人,因为我正在学习游戏教程......实际上它是一张叶子的图画。

这是导致我出现问题的代码位:

var军队:数组;var 敌人:敌人;
功能避免游戏(){军队=新数组();var newEnemy = 新敌人(100, 100); 军队.push(新敌人);addChild(新敌人);}

功能计时器事件(事件:事件):无效{

if (a.getAnalogData(0) ==0 && a.getAnalogData(0) != this.lastposition){

          trace("leaf");
          var randomX:Number = (Math.random() * 200) + 100;
          var randomY:Number = (Math.random() * 150) + 50;
          var newEnemy = new Enemy( randomX, randomY);
          army.push( newEnemy );
          addChild( newEnemy );
       } else if (a.getAnalogData(0) == 0) {   //don't trace anything } >else {

//不追踪任何东西 } this.lastposition = a.getAnalogData(0); //之后,将位置设置为新的最后一个位置并重复。

}

我已经导入了“import flash.display.MovieClip;”

Enemy 类的代码如下所示:

包 { 导入 flash.display.MovieClip; 公共类敌人扩展电影剪辑{公共功能敌人(startX:Number,startY:Number){x = startX; y = startY; } } }

这是我的错误。我试过谷歌搜索,这似乎是一个非常普遍的错误:

TypeError:错误 #1009:无法访问空对象引用的属性或方法。在 as3glue_program_fla::MainTimeline/timerEvent() 在 flash.utils::Timer/_timerDispatch() 在 flash.utils::Timer/tick()

我已确保为 AS3 导出了“敌人”对象。

当它在 AS2 中编程时,我会这样做:

叶计数器 = 0; //将计数器设置为0 counter.swapDepths(1000); //将计数器放在几乎任何东西的顶部,除非你制作超过 1000 片叶子!计数器.文本框.文本 = 0; //在“计数器”影片剪辑的文本框中显示“0”

this.onMouseDown = function() { //鼠标点击时触发 this.attachMovie("Leaf","Leaf"+leafCounter,leafCounter,{_x:Math.random()*Stage.width,_y:Math.random ()*Stage.height,_rotation:Math.random()*360}); //添加一个叶子到rthe阶段,具有随机位置和随机旋转leafCounter++; //叶子计数器加 1 counter.textbox.text = leafCounter; //在文本框中显示该数字 }

我确定这一定是一个简单的错误,当它只是在屏幕上追踪某些东西时,我可以让逻辑正常工作,但我无法让它生成一个“敌人”

任何帮助或提示都会非常有用!我知道修改现有代码有点笨拙。

4

2 回答 2

0

好的,您抛出的错误意味着您认为应该存在的东西不存在。目前最好的候选人正在寻找最后的位置,尽管您可能更早地实例化了它。注释掉每个全局变量,直到它起作用。您似乎正在检查 a.input 是否等于 0 但不是 lastposition,然后您稍后将 lastposition 设置为 a.input(必须为 0)也检查一下。

于 2010-04-18T19:15:13.660 回答
0

出于某种原因,取出这条线 Army.push(newEnemy); 使这项工作完美!:D

于 2010-04-19T12:13:35.093 回答