一位好朋友向我推荐了这个网站,它看起来真的很有用!我在动作脚本方面有点无耻的菜鸟,经过 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; //在文本框中显示该数字 }
我确定这一定是一个简单的错误,当它只是在屏幕上追踪某些东西时,我可以让逻辑正常工作,但我无法让它生成一个“敌人”
任何帮助或提示都会非常有用!我知道修改现有代码有点笨拙。