[問題] 請教目前想的一個角色系統架構
藉由這幾天的努力,以及在Flash板的求助
(一直發文詢問實在很不好意思,也很感謝CJ貓和板主給我的一些方向及指示)
目前正在Flash弄的一個角色處理部份總算有些進展,不過也還是有一些問題...
所以這次想說附上整個fla檔及code ( http://www.badongo.com/file/15771506 )
想跟大家討論、請益一下是不是最基本的架構部份我就走錯方向了 囧
整體的概念是,將整個角色的部份做成一個swf,可以在場景中載入
在這個角色swf裡包含了所有角色可能會有的動作,以及衣服狀態
再藉由對這個角色swf做跳影格的方法
可以得到可以在場景上看到角色有換衣服以及做動作的效果
目前架構如.fla檔所示,最外面是一個BaseMC包著所有的資料
接著下一層是構想說放置所有動作的部份(包含靜止不動)
以關鍵影格做為區分,每一格代表一個動作的MC
在每個動作的MC裡面,再使用元件庫裡各身體部位的元件,去拼湊出角色以及拉出其動作
所以用到的身體部位元件基本上都是一樣的,只是被放在不同的動作MC內去使用
至於身體部位MC裡,也有分幾個關鍵影格,每一格代表的是不同的服裝
因此在換服裝或是換動作的部份,都是採取跳不同的關鍵影格來實做
而在實做的時候,有想了也試了幾種方法:
1. 在外部載入,以及在外部去控制裡面的動作MC和身體部位MC去跳影格
結果問題在於,在動作A換好衣服(身體MC所停的影格),跳到動作B之後就一切重來了...
2. 記錄著換裝的資訊,等換動作之後再去設定衣服
記得這個方法的問題好像在於
換動作之後會先在預設的衣服(第一格),再閃爍一下切換到記錄著的衣服
3. 就是目前的做法,在swf裡的最上層stage記錄著換裝的資訊,也寫了一個換裝的函式
在每個動作影格裡,寫著用swf記錄的換裝資訊先去跑換裝函式
接著才會進入動作影格的動作MC裡播動作
這樣是解決了之前的一些問題
不過在之中有發生個問題就是,剛跳過去的關鍵影格裡的MC不能馬上使用,會是null
像是一開始就跳到動作2的影格,再馬上去對動作2裡的MC做事就會回傳接觸未定義的錯誤
(也因此目前檔案裡面的code有檢查null...)
4. 為解決3而改良的做法,也就是在每個MC的影格內再去寫跳下一層的影格
因為已經進入MC的影格,所以不會有MC還沒跑完而是null的狀態
不過這種做法還有一些問題,最明顯的就是code會很分散,這讓我覺得很可怕
另外還有像是必須跑過其影格,才能順利換裝
假如用gotoAndStop,就沒辦法跑到後面影格所寫的換裝code
也因此目前還在3的階段苦惱中,昨天試了一下CJ貓指引的方向也遇到了一些問題
雖然身體部位都是同樣MC,但動作跟動作間的MC因為不一樣
所以似乎不能使用同步化元件
以及對null的MC去加EventListener好像也會有問題
(還是說要對其上一層的MC去監聽ADDED_TO_STAGE事件?)
所以想請教大家目前我的方向是對的嗎?或是說有哪些地方可能走錯了?
這幾天一邊弄一邊產生了不少問題出來
實在是讓我越寫越心虛...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.145.78
討論串 (同標題文章)
完整討論串 (本文為第 1 之 4 篇):