我希望能够将变量传递给事件。搜索之后,我发现这是不可能的,很多人只是使用了匿名函数。问题是,我需要传递的变量是唯一的,所以我不能使用匿名函数。不知道我该如何解决这个问题?以下是我的代码顺便说一下的方式:
function SpawnNote(rpos:int):void
{
var spawn:int;
spawn = int(Math.random() * notes.length);
rtemp = rpos;
if(rsn%2==1)
{
if(rtemp==1)
{
rpos = int(Math.random() * 2)+2;
}
if(rtemp==2)
{
rpos = int(Math.random() * 2);
if(rpos==0)
{
rpos = 3;
}
}
if(rtemp==3)
{
rpos = int(Math.random() * 2)+1;
}
}
var note:MovieClip = new notes[spawn]();
addChild(note);
if (rpos ==1)
{
note.x = pos1;
}
else if (rpos==2)
{
note.x = pos2;
}
else if (rpos==3)
{
note.x = pos3;
}
note.y = 150;
note.addEventListener(Event.ENTER_FRAME, MoveNote);
note.addEventListener(MouseEvent.CLICK, CheckNote(spawn));
}
function MoveNote(event:Event):void
{
var note:DisplayObject = event.target as DisplayObject;
note.y += 15;
if (note.y >= stage.stageHeight + 50)
{
note.visible = true;
note.removeEventListener( Event.ENTER_FRAME, MoveNote);
note.removeEventListener(MouseEvent.CLICK, CheckNote);
this.removeChild(note);
}
}
答案 0 :(得分:0)
您应该在注释中添加一个字段,表示它是好是坏,并将note
视为其类或MovieClip
,而不只是DisplayObject
。
note.bad = ... // some expression dependent on "spawn"
function CheckNote(e:Event):void {
var note:MovieClip=e.target as MovieClip;
if (note==null) return;
if (note.bad) ... // process, now you can query if the note is bad.
}