as3.0 怎么用按钮控制 删除选中的影片剪辑,影片剪辑是复制出来的。

删除下面代码复制出来的mymc0:buildingMC.addEventListener(MouseEvent.MOUSE_DOWN,copy);functioncopy... 删除下面代码复制出来的mymc0:
buildingMC.addEventListener(MouseEvent.MOUSE_DOWN,copy);
function copy(event:MouseEvent):void {
var flag = 1;
var mymc0: BuildingMC1 = new BuildingMC1();
addChild(mymc0);
也就是我选中哪个影片剪辑按一下删除按钮就能把它删除?
我只有这么多财富值了,希望好心人帮忙解答下!不甚感激!
展开
 我来答
朴实又可爱的小桃花n
2011-07-28 · TA获得超过824个赞
知道小有建树答主
回答量:278
采纳率:0%
帮助的人:258万
展开全部
你这段代码有些零乱,flag是干嘛哒?
我可以给你一个思路。

假设你当前已经在场景上面创建了若干影片,(并且parent==stage,当然也可以是其他,不过你需要修改我下面出现的代码)并按照一定的序列排列好。
//实例化数组
var arr:Array=new Array();
//创建一个监听。
stage.addEventListener(MouseEvent.CLICK,jr);
function jr(e:MouseEvent):void
{
for(var i:int=0;i<arr.length;i++){
//在这里你得注意一个问题,由于我是直接对舞台进行监听,所以,你放置在舞台上的一切都会
//被移除掉,你可以将stage换成其他sprite,然后监听sprite的单击事件。
if(arr[i]==e.target){
arr.splice(arr[i],1);//如果数组中存在这个影片,则从数组中删除
//也就是说这个影片剪辑被你点击了偶数次,另外,你可以获取元件矩形并绘制和删除边框。
//代码我就不贴出来了。
return;
}
arr.push(e.target);//否则将这个影片加入到数组中去
//自己想一下原因吧,这样的解释应该清楚了吧
}
}
//假设你有一个删除按钮,按钮实例名为“btn”。当点击删除后,存在数组中的影片全部删除掉。
btn.addEventListener(MouseEvent.CLICK,clea);
function clea(e:MouseEvent):void
{
for(var j:int=0;j<arr.length;j++){

stage.removeChildAt(stage.getChildIndex(arr[j]));//删除数组指向的影片
arr.shift();//删除arr的第一个元素
}
}

以上是随场编辑的,没有经过测试,如果有问题就追问吧。另外,你也可以限制为一次只允许删除一个元件。只需要每次点击的时候删除一个,增加一个数组就行了。
更多追问追答
追问
先谢谢你帮我写得这么详细,但是我对那个数组搞得不太清楚,我用trace(arr.length)输出总是0 ,还有那个for 循环也不是很懂,好像都没执行进去的,我对这方面的编程还不是很懂。。。。。我那个flag是标志变量,对这个问题应该没影响的
追答
楼下的回答我看了下,他的每次只能选中一个影片剪辑并删除,并且为每个影片剪辑添加了事件监听。
我的是加入到数组中去,你可以随便选择几个,也可以只选择一个,并且只对舞台进行侦听。
在for循环里面是为了判断那个影片是否被选中了。如果数组中有那个影片,说明就是被选中了,那么就应该删除,如果数组中没有,就加入到数组中去。晚上我会测试下,测试后结果我会修改答案。刚刚测试了下,其中的判断出了问题。现有两套方案,一套依然用array,另一套用Dictionary。两套我都贴出来,都经过测试了。
Dictionary版:
import flash.display.Sprite;
import flash.utils.Dictionary;

var spr:Sprite=new Sprite();
addChild(spr);
for(var i:int=0;i<12;i++)
{
var a:ab=new ab();//将你的影片剪辑类名设置为ab;
a.aa.text=i.toString();
a.aa.mouseEnabled=false;
a.x=(i%3)*50;
a.y=int(i/3)*50;
spr.addChild(a);
spr.name=a+i;
}
var hashmap:Dictionary=new Dictionary();
var arr:Array=new Array();
//创建一个监听。
stage.addEventListener(MouseEvent.CLICK,jr);
function jr(e:MouseEvent):void
{
if(e.target is ab){
if(!hashmap[e.target.name])hashmap[e.target.name]=e.target;
else delete hashmap[e.target.name];
}
}
bt.addEventListener(MouseEvent.CLICK,clea);//按钮的实例名为bt.
function clea(e:MouseEvent):void
{
for(var str:String in hashmap)
{
spr.removeChild(hashmap[str]);
delete hashmap[str];
}
}
晕死,另一套array版的发不上了,字数太多了。如果需要再问我要吧。
381713677
2011-07-28 · TA获得超过445个赞
知道小有建树答主
回答量:672
采纳率:0%
帮助的人:395万
展开全部
老兄你得把这些复制的MC都放进数组里才好操作:
import flash.display.MovieClip;
var shuzu:Array = new Array();
for(var i:uint=0;i<"复制MC的个数";i++){
shuzu[i] = "复制的MC";
shuzu[i].addEventListener(MouseEvent.CLICK,cl);
}
function cl(e:MouseEvent):void{
var cle_mc:MovieClip = e.target as MovieClip;
removeChild(cle_mc);
}
追问
这个点击影片剪辑自身就删除了,我是要选中影片剪辑然后点击删除按钮再删除!麻烦再帮我想想。
追答
换这个试试:
import flash.display.MovieClip;
var ggmc:MovieClip;
var shuzu:Array = new Array();
for(var i:uint=0;i<"复制MC的个数";i++){
shuzu[i] = "复制的MC";
shuzu[i].addEventListener(MouseEvent.CLICK,cl);
}
function cl(e:MouseEvent):void{
ggmc = e.target as MovieClip;
}

按钮名.addEventListener(MouseEvent.CLICK,cle);
function cle(e:MouseEvent):void{
removeChild(ggmc);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
和爱良08
2011-07-28 · TA获得超过124个赞
知道答主
回答量:144
采纳率:0%
帮助的人:78.4万
展开全部
removeChild(mymc0)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式