+ -
当前位置:首页 → 问答吧 → event.target.name怎么是乱的呢?

event.target.name怎么是乱的呢?

时间:2011-07-23

来源:互联网

下面的代码是创建了5排6列共30个sprite,我给它们赋予名字,但是trace出的名字是乱的,是从0-5,10-15,20-25等。最后一个是45。这是怎么回事?

还有,就是我侦听只能放在for循环里面才能让各个方块摸上去时变大,若把侦听写在for循环外面,则只有最后一个方块变大,这是为何。把侦听写在循环外面,如何实现鼠标移到那个方块,哪个就放大?
复制内容到剪贴板
代码:
import flash.display.Sprite;
import flash.events.MouseEvent;
for (var i:uint=0; i<5; i++)
{
    for (var j:uint=0; j<6; j++)
    {
        var sp:Sprite=new Sprite();
        sp.graphics.beginFill(0xff0000);
        sp.graphics.drawRect(0,0,70,30);
        sp.graphics.endFill();
        this.addChild(sp);
        sp.x = 100+80*i;
        sp.y = 50+50*j;
        sp.addEventListener(MouseEvent.MOUSE_OVER,overHandler);
        sp.addEventListener(MouseEvent.MOUSE_OUT,outHandler);
        sp.name="go"+i+j
    }
}
function overHandler(event:MouseEvent):void{
    event.target.scaleX=event.target.scaleY=2;
    trace(event.target.name);
}
function outHandler(event:MouseEvent):void{
    event.target.scaleX=event.target.scaleY=1;
}
[ 本帖最后由 568041915 于 2011-7-23 13:23 编辑 ]

作者: 568041915   发布时间: 2011-07-23

sp.name="go"+i+j

在循环中本身就是 00-05  10-15 20-25
修改成"go"+(i*5+j) 就是0-N

在循环里面添加侦听是对每个元件都添加了侦听,在循环外面就只对最后一个添加侦听
要把侦听写在外面,可以对这些对象共同的父对象添加侦听

作者: flash023   发布时间: 2011-07-23

多谢版主,还有个问题,创建出来的方块注册点默认是左上角0,0
所以现在变大是从左上角变的。怎么改变注册点在中间呢,我想从中间变大

作者: 568041915   发布时间: 2011-07-23

设置 matrix属性
也可以绘制时改变一下你现在的参数
还可以嵌套一层元件来调整

作者: flash023   发布时间: 2011-07-23