首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

使用for循环创建了10个Shape以后,小弟我需要当点击某个元素时,设置其属性,如将他的透明度变为

2012-02-04 
使用for循环创建了10个Shape以后,我需要当点击某个元素时,设置其属性,如将他的透明度变为private p50for

使用for循环创建了10个Shape以后,我需要当点击某个元素时,设置其属性,如将他的透明度变为
private p=50;
for(i=0;i<=10;i++)
{
var spe:Shape = new Shape;
spe.graphics.beginFill(0xFF0000);
spe.graphics.drawRect(p, p, p+100, p+100);
spe.graphics.endFill();
p+=100;
spe.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown)
}

private function onMouseDown(e:MouseEvent):void
{
//使用for循环创建了10个Shape以后,我需要当点击某个元素时,设置其属性,如将他的透明度变为 -> alpha = 0.5
//怎么写呢。。。。。。。。。
}

[解决办法]
首先Shape为形状。不能添加鼠标监听。所以改为sprite

JScript code
import flash.events.MouseEvent;import flash.display.Sprite;for (var i:int=0; i<=10; i++){    var spe:Sprite = new Sprite();    spe.graphics.beginFill(0xFF0000);    spe.graphics.drawRect(0, 0, 30, 30);    spe.graphics.endFill();    addChild(spe);    spe.x = i * 32;    spe.y = 200;    spe.name = "spe" + i.toString();    spe.addEventListener(MouseEvent.CLICK,mouseEvent);}function mouseEvent(e:MouseEvent):void{    //trace(e.target.name);    var temp:String;    switch (e.target.name)    {        case "spe0" :            temp = "点击spe0";            break;        case "spe1" :            temp = "点击spe1";            break;        case "spe2" :            temp = "点击spe2";            break;        default :            temp = "其他"+e.target.name;            break;                }    trace(temp);}
[解决办法]
补充楼上:
1)你的循环结束后,是11个,而非10个
2)为提高性能,不必每个sprite添加一个侦听器,为其外围容器添加一个侦听就可以了
JScript code
import flash.display.Sprite;import flash.events.MouseEvent;var p:uint = 50;var holder:Sprite = new Sprite();holder.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);this.addChild(holder);for(var i:uint = 0; i < 10; i++){    var s:Sprite = new Sprite();    s.graphics.beginFill(0xff0000);    s.graphics.drawRect(p,p,p + 100,p + 100);    s.graphics.endFill();    holder.addChild(s);    p += 100;}function onMouseDownHandler(e:MouseEvent):void{    Sprite(e.target).alpha = 0.5;} 

热点排行