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命名,然后给他们放到一个数组里,通过索引位置来控制他们。
展开
 我来答
SugarLynne
2013-07-27 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:172
采纳率:50%
帮助的人:118万
展开全部
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分钟~~
百度网友fe56b77

2013-07-27 · TA获得超过2275个赞
知道大有可为答主
回答量:1961
采纳率:16%
帮助的人:1080万
展开全部

用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]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Many_question
2013-07-27 · TA获得超过2853个赞
知道大有可为答主
回答量:2040
采纳率:66%
帮助的人:2328万
展开全部

可以用getDefinitionByName函数来将字符串转换成类命.

比如你的代码可以写成:

for(var i = 1;i<=10;i++){
  this["mc_horse"+i] = new (getDefinitionByName("Mc_horse"+i) as Class);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式