flash AS3.0关于定义变量的问题,请高手赐教
varmc_horse1:Mc_horse1=newMc_horse1;varmc_horse2:Mc_horse2=newMc_horse2;varmc_horse3:...
var mc_horse1:Mc_horse1 = new Mc_horse1 ;
var mc_horse2:Mc_horse2 = new Mc_horse2 ;
var mc_horse3:Mc_horse3 = new Mc_horse3 ;
var mc_horse4:Mc_horse4 = new Mc_horse4 ;
var mc_horse5:Mc_horse5 = new Mc_horse5 ;
var mc_horse6:Mc_horse6 = new Mc_horse6 ;
var mc_horse7:Mc_horse7 = new Mc_horse7 ;
var mc_horse8:Mc_horse8 = new Mc_horse8 ;
var mc_horse9:Mc_horse9 = new Mc_horse9 ;
var mc_horse10:Mc_horse10 = new Mc_horse10 ;
比如上面的例子,要生成这样十个影片剪辑的实例,这样就是写了10行代码
有没有可能用for循环来定义这样的变量呢?
主要问题在于变量的这个“类”连接上,也就是上例子中大写开头的Mc部分。
如果这个地方可以解决,前面的变量名无所谓,我可以都用mc命名,然后给他们放到一个数组里,通过索引位置来控制他们。 展开
var mc_horse2:Mc_horse2 = new Mc_horse2 ;
var mc_horse3:Mc_horse3 = new Mc_horse3 ;
var mc_horse4:Mc_horse4 = new Mc_horse4 ;
var mc_horse5:Mc_horse5 = new Mc_horse5 ;
var mc_horse6:Mc_horse6 = new Mc_horse6 ;
var mc_horse7:Mc_horse7 = new Mc_horse7 ;
var mc_horse8:Mc_horse8 = new Mc_horse8 ;
var mc_horse9:Mc_horse9 = new Mc_horse9 ;
var mc_horse10:Mc_horse10 = new Mc_horse10 ;
比如上面的例子,要生成这样十个影片剪辑的实例,这样就是写了10行代码
有没有可能用for循环来定义这样的变量呢?
主要问题在于变量的这个“类”连接上,也就是上例子中大写开头的Mc部分。
如果这个地方可以解决,前面的变量名无所谓,我可以都用mc命名,然后给他们放到一个数组里,通过索引位置来控制他们。 展开
3个回答
展开全部
MovieClip是继承Sprite容器类的哦 Sprite就是没有时间轴的MovieClip 所以用Sprite
var mc_horse:Sprite = new Sprite();
mc_horse.x = 20;
mc_horse.y = 60;
this.addChild(mc_horse);
for (var i:int = 0; i<10; i++) {
var item:MovieClip = new ItemMC();
item.x = 120 * i;
item.y = 10;
item.name = "item" +i ;
mc_horse.addChild(item);
}
以下是输出测试和详解:
var mc_horse:Sprite = new Sprite(); //声明mc_horse变量,并且实例化Sprite类
mc_horse.x = 20; //mc_horse的初始x轴位置
mc_horse.y = 60; //mc_horse的初始y轴位置
this.addChild(mc_horse); //先将mc_horse对象加入目前的时间轴上(主时间轴)
for (var i:int = 0; i<10; i++) {
var item:MovieClip = new ItemMC(); //声明MovieClip类
item.x = 120 * i; //等差距离隔开x轴位置
item.y = 10; //y轴位置不变,即在一水平位置上
item.buttonMode = true; //给item设置其buttonMOde属性为true,使其出现按钮手势指针(此句可有可无,因为MovieClip类默认没有按钮手势指针,就是你想点击的时候鼠标放上去会变成一个小手指)
item.name = "item" +i ; //给名字后面加上数字
item.addEventListener(MouseEvent.CLICK,onClick); //侦听item
mc_horse.addChild(item); //返还父类mc_horse
}
function onClick (e:MouseEvent):void {
trace(e.currentTarget.name + "被点击了!"); //在输出面板输出MC名称被点击了
}
另:指定for循环时,格式为for(初始值,条件,递增) 此为必要的for循环语句反复执行条件,会以初始值先执行一次,然后递增判断是否符合条件,一般定义一个最大值,即你循环递增次数,所以此处i的值为0~9,循环10次,当不符合i<10时即i>=10,跳出循环,执行下一行代码。
如有帮助请采纳,不懂可追问,谢谢,我敲了20分钟~~
var mc_horse:Sprite = new Sprite();
mc_horse.x = 20;
mc_horse.y = 60;
this.addChild(mc_horse);
for (var i:int = 0; i<10; i++) {
var item:MovieClip = new ItemMC();
item.x = 120 * i;
item.y = 10;
item.name = "item" +i ;
mc_horse.addChild(item);
}
以下是输出测试和详解:
var mc_horse:Sprite = new Sprite(); //声明mc_horse变量,并且实例化Sprite类
mc_horse.x = 20; //mc_horse的初始x轴位置
mc_horse.y = 60; //mc_horse的初始y轴位置
this.addChild(mc_horse); //先将mc_horse对象加入目前的时间轴上(主时间轴)
for (var i:int = 0; i<10; i++) {
var item:MovieClip = new ItemMC(); //声明MovieClip类
item.x = 120 * i; //等差距离隔开x轴位置
item.y = 10; //y轴位置不变,即在一水平位置上
item.buttonMode = true; //给item设置其buttonMOde属性为true,使其出现按钮手势指针(此句可有可无,因为MovieClip类默认没有按钮手势指针,就是你想点击的时候鼠标放上去会变成一个小手指)
item.name = "item" +i ; //给名字后面加上数字
item.addEventListener(MouseEvent.CLICK,onClick); //侦听item
mc_horse.addChild(item); //返还父类mc_horse
}
function onClick (e:MouseEvent):void {
trace(e.currentTarget.name + "被点击了!"); //在输出面板输出MC名称被点击了
}
另:指定for循环时,格式为for(初始值,条件,递增) 此为必要的for循环语句反复执行条件,会以初始值先执行一次,然后递增判断是否符合条件,一般定义一个最大值,即你循环递增次数,所以此处i的值为0~9,循环10次,当不符合i<10时即i>=10,跳出循环,执行下一行代码。
如有帮助请采纳,不懂可追问,谢谢,我敲了20分钟~~
展开全部
用for循环可以实现的。等下回答你!!!
for (var i:Number=1; i<10; i++) {
var mc_horse:Mc_horse=new Mc_horse;
mc_horse.x=50*i;
addChild(mc_horse);
}
以上是直接复制10个mc,如果要起名,可以用下面这种方式
var obj:Object = new Object();
for (var i:int = 0; i < 10; i++) {
var mc_horse:Mc_horse = new Mc_horse();
obj["mc_horse"+i]=mc_horse;
obj["mc_horse"+i].x= 50*i;
obj["mc_horse"+i].y=100;
addChild(obj["mc_horse"+i]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用getDefinitionByName函数来将字符串转换成类命.
比如你的代码可以写成:
for(var i = 1;i<=10;i++){
this["mc_horse"+i] = new (getDefinitionByName("Mc_horse"+i) as Class);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询