作者jonathanmeow (喵)
看板Flash
標題Re: [問題] 一次讓很多物件動的方式?
時間Mon Jan 1 19:40:00 2007
※ 引述《aquarianboy (一路好走..)》之銘言:
: ※ 引述《ooic (誠徵萬年女友中)》之銘言:
: : ex moon1 ~ moon8
: : 用for來讓8個一起播放...有辦法嗎?
: : 像
: : for (i=1;i<9;i++){mooni.gotoandplay(i);}
: : 這種感覺
: : @@"
: for (var i:Number = 1; i<=8; i++) {
: this["moon"+i].gotoAndPlay(1);
: }
: 推 ooic:thx thx @@" 01/01 01:41
: 推 ooic:嗯...沒用啊...囧 01/01 14:16
其實a大所寫的是正確的
一定可以用
如果不能用 像ooic這樣
應該就是路徑上的問題
使用this["moon"+i]的時候
那個this指的是現在程式碼所在的元件
我在猜測ooic應該是按下一個按鈕後 叫她們八個都動作吧
所以在for這段之前應該會有一個xxx_btn.onPress=function(){
因此接下來這個大括號底下的this都是指xxx_btn
但是moon1~moon8或許是放在_root底下
而xxx_btn也是放在_root底下
這樣子就當然不會動作了
因為xxx_btn底下並沒有moon1~moon8
所以以我舉的例子的寫法
這個this就要改成this._parent就是讓目標指回去_root(上一層)
若ooic您的元件配置不是這樣子可能就是不同的寫法
為什麼我說a大講的一定可以用 因為我看"大師談FLASH遊戲的設計與製作"裡
也有看到這種this[]的寫法
當時我很驚喜
因為我從來不知道這種寫法
忘記eval是哪裡學到的 昨天開啟flash查了一下eval的說明檔
真的有這種替代寫法 而且是比較好用的(所以我才驚喜)
剛看到ooic這個問題也直覺可以用eval解決 但想試試看this[]的用法
我剛測試了一下也的確沒錯 這寫法是行得通的 只是路徑要處理一下
(其實eval也要指定路徑)
我給你我的測試檔
你再研究看看 :)
http://163.19.207.214/flash/test2.fla
不過這種寫法不能直接用_root["moon"+i]耶?
剛測試好像不行....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.141.15.249
推 ooic:soga,還真是深奧啊@@",感謝 01/01 20:04
→ jonathanmeow:深奧喔?還好吧...這跟寫網頁一樣 路徑是很重要的... 01/01 20:25
→ jonathanmeow:路徑清楚後很多事情就都解決了 那你的問題解決了嗎? 01/01 20:25
推 Jerrynet:那是因為i是Number~"moon"是字串吧~? 01/01 20:29
→ jonathanmeow:不懂你說的? flash中"moon"+i就是moon1 when i=1 01/01 20:32
→ jonathanmeow:flash中+號可以當作加起來也可以當作"字"連起來.... 01/01 20:33
推 easeeasy:我解釋一下eval eval()是將字串組合 再將組合的字串對應 01/01 20:54
→ easeeasy:到MovieClipe身上 和this[]一樣 不過可以將eval和this 01/01 20:55
→ easeeasy:上是絕對路徑和相對路徑的觀念 這樣會幾較好理解 01/01 20:56