【发布时间】:2014-02-02 14:33:42
【问题描述】:
另一个拼命困在这里的一年级学生。我必须使用 FlashCS 作为我的编码环境。这很糟糕。所以我会尝试一些结构良好且清晰的问题。有:
public var object: symbol1;
public var objectarray: Array = new Array();
在我的主要。然后有一个函数使用计时器并生成一个新对象并将其推送到数组中:
object = new symbol1;
objectarray.push(object)
但是当我 trace() 数组的 .length 时,它会在输出中的每个计时器周期显示两个数组长度数字。如:
1 1 2 2 3 3
等等。这是我的第一个谜。为什么两个不是一个?因为我无法两次调用包含 trace () 的函数。另外我认为我需要能够在 objectarray 离开舞台时将其从 objectarray 中移除,但是 objectarray.pop()如果我在函数中这样使用它似乎不起作用:
if (object.y == stage.stageHeight)
objectarray.pop()
正如我在 .pop() 之前和之后尝试 trace() 的 array.length,但它一直在上升每个定时器周期加一。 另一个更大的问题是我想知道您是否允许将通常放置在任何类的 main 函数下方的 .addEventListeners 放入语句循环中.就像我有
class extends Main {
class function() {
for (var i:Number = 0; i < objectarray.length; i++){
objectarray[i].addEventListener(Event.ENTER_FRAME, collision);}}
然后,如果允许的话,程序似乎无论如何也没有进入同一个类的碰撞函数。
function collision (event:Event) : void{
if (this.hitTestObject(object)){
trace('hit');}}
所以我搜索并最终添加了一个
var clip:MovieClip = MovieClip(e.target);
在函数的第一行,但后来它不起作用,我意识到我不明白它的意思是什么,发生了什么以及这个转换的语法是什么。 非常感谢。 编辑/更新:添加更多我的代码,尽管我讨厌这样复制粘贴。这是当另一个类的对象碰到它时将要改变的符号类
public class Head extends Main {
public function Head(){
this.stop();
for (var i:Number = 0; i < nicesnowflakearray.length; i++){
nicesnowflakearray[i].addEventListener(Event.ENTER_FRAME, snowhit);
}
}
public function snowhit(event:Event) : void {
if (this.hitTestObject(nicesnowflake)){
//I changed this line to (e.currentTarget.hitTestObject(nicesnowflake)) as Atriace suggested, but nothing changed, and I just don't understand why my version wouldn't work.
trace("hit");
}
}
这是生成应该击中 Head 对象的对象的类:
public class Main extends MovieClip {
public var nicesnowflake: fallingsnow;
var nicesnowflakespawntimer: Timer = new Timer(1000);
public var nicesnowflakearray: Array = new Array();
public function Main() {
nicesnowflakespawntimer.addEventListener(TimerEvent.TIMER, nicesnowflakespawn);
nicesnowflakespawntimer.start();
}
public function nicesnowflakespawn(event:TimerEvent) : void {
nicesnowflake = new fallingsnow;
nicesnowflake.x = Math.random()* stage.stageWidth;
nicesnowflake.y = - stage.stageHeight + 100;
nicesnowflakearray.push(nicesnowflake);
stage.addChild(nicesnowflake);
trace(nicesnowflakearray.length);
}
【问题讨论】:
标签: arrays actionscript-3 target