作者AizawaYuuiti (相沢 佑一)
看板Flash
标题Re: [问题] 关於ENTER_FRAME 物件逐次消失
时间Fri Apr 20 19:27:54 2012
※ 引述《terrywang (拼)》之铭言:
: var mc:MovieClip;
: mc.visible = true;
: mc._txt.text.visible = true;
基本上visible跟enabled就算没有特别宣告
也会预设是true的状态
因为不可能拉进来预设看不到
: myTime = getTimer();
import flash.utils.getTimer;
: for (var i:int=0; i<15; i++)
: {
: mc = new aa();
: this.addChild(mc);
: mc._txt.text = '' +(1+i);
: mc.x = 30+(i%5)*mc.width * 2;
: mc.y = 50 + int(i / 5) * mc.height * 2;
: this.addEventListener(Event.ENTER_FRAME,invisble);
: //显示物件的大小位置,而後再对物件做ENTER_FRAME
这里提到enterFrame的对象是 物件
但是这里的this呢?是哪个对象?
不知道的话可以trace(this)看看
: //以求物件可以逐步的一个个隐藏
: }
: function invisble(e:Event)
invisible?
: {
: nowTime = getTimer();
: //上面nowTime的设定是参考范例 不知为何会被判定未定义的属性
: var sec = Math.floor((nowTime-myTime)/1000);
: //我设定物件一秒做一次动作
这里有个问题,你的myTime一开始就抓值了
接着就算成功对物件作enterFrame
短短的for回圈15趟就已经几乎同时完成(对人来说)
然後每个物件在一秒之後都判定sec>=1
所以会同时产生,接着在一秒之後同时消失
: mc._txt.text = '' +(1+i);
: //因为mc._txt.text是在for回圈,为了避免找不到,所以在这边再做一次设定
这一行没有发生任何错误吗?
function invisible里面
你没有宣告任何i
而且就算宣告了也不会跟for一样
直接重复一次也不是正确的做法
: if (sec >= 1)
: {
: mc.visible = false;
: mc._txt.text = false;
: }
上面的mc都有一个问题
你的"mc"本身都是在呼叫完aa之後就扔掉了
对於function来说就算你在外面有宣告mc
随着for回圈的完成,mc就会是最後一个物件
也就是function invisible几乎都只有判定最後一个物件
前面的14个是绝对没有反应的
: }
: 因为还在练习,所以有很多概念都写的不好,希望各位先进可以给予一些提示
: 谢谢你们 M(_ _)M
1.
物件是可以宣告附属值的
例如你宣告个mc
mc.x跟mc.y是因为座标所以被取走了
你可以弄个mc.t=60之类的
2.
另外针对物件作enterFrame
当下应该是mc.addEventListener才对
那里的this估计应该会是stage本身
你做了15次addEventListener
3.
然後function invisible里面
可以设定每个frame都让mc.t-1
if(mc.t<=0)更改visible之类的
而且既然_txt在mc里面
老实说更改她的visible有点多此一举
毕竟就算她的visible是true
mc的visible是false你也看不到
4.
关於function invisible里面
那个e:Event不是放假的
如果针对mc.addEventListener之类的
那麽对於"每个"function invisible
(对每个物件来说都是独立的)
只要在里面写上e.currentTarget就代表呼叫function的物件本身
举个例子
var a:MovieClip
var b:MovieClip
a.addEventListerner(Event.ENTER_FRAME,invisible)
b.addEventListerner(Event.ENTER_FRAME,invisible)
function invisible(e:Event){
e.currentTarget.x+=1
}
这样a跟b就会同时每个frame都往右移
5.
如果你不是进行无限期的动作
而是在时间到改变visible之後就没用了
建议你在if(sec>=1)里面
加上个removeEventListener的动作
不然算是浪费记忆体
==
以上
加油吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.121.208.31
※ 编辑: AizawaYuuiti 来自: 140.121.208.31 (04/20 19:30)
※ 编辑: AizawaYuuiti 来自: 140.121.208.31 (04/20 19:30)
1F:推 terrywang:谢谢先进!! 04/21 10:02
2F:推 terrywang:谢谢先进解惑与解说 让我了解错误的地方 :D 04/21 10:07
3F:→ terrywang:谢谢你的解说让我学到很多东西 m(_ _)m 04/21 10:08
4F:→ puivujh:天哪!我今天才知道可以直接 obj.value .....orz 04/21 23:50
5F:→ puivujh:一直以为as3啥都非var不可,白玩这麽久的flash了...(跪) 04/21 23:54
6F:→ aquarianboy:AS3并不是所有的东西都可以这样做的 :) 04/22 02:50
7F:→ puivujh:是啊,只是我一直以为所有东西都不能这样作...@@" 04/22 10:52
8F:推 etrexetrex:只有 dynamic class 可以这样 04/23 10:11