討論區快速選單
知識庫快速選單
Excel也能做到大數據分析? 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
動態產生flash sprite的問題
更改我的閱讀文章字型大小
作者 : aquastartw(水星)
[ 貼文 15 | 人氣 1813 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/9 下午 02:17:37
最近小弟在做一個rts,所以會放很多swf在stage上。但是只要放幾個swf上去,fps就會從幾百掉到不到30。查看網路上的文章,是建議先將swf轉換成image list,再用bitmap的方式貼上去。小弟試過效能果然好很多,不過卻又出現其他的問題。

這是我參考的文:
Flash + Director = not quite so slow
http://director-online.com/buildArticle.php?id=892


問題有兩個。第一個是用makeScriptedSprite用flash member產生的sprite,無法用goToFrame控制其內容。

spr = channel(1).makeScriptedSprite(member("FlashMember"), point(100, 20))
spr.goToFrame(10) -- 這裡會當掉

現在解決的方式就是先將sprite放在stage上就不會有問題。但希望能有更佳解。


第二個問題是在將flash轉換成image list時,並不能抓到其alpha值。所以現在轉出來的圖貼在stage都是有色塊背景的(汗)。不知道大家有沒有好方法,要不然小弟可能要一個pixel一個pixel來抓出alpha的圖層(汗)。
作者 : dna256(DNA) 人氣指數超過10000點
[ 貼文 160 | 人氣 11884 | 評價 420 | 評價/貼文 2.62 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/9 下午 09:59:09
>spr = channel(1).makeScriptedSprite(member('FlashMember'), point(100, 20))
>spr.goToFrame(10) -- 這裡會當掉

試試把spr.goToFrame(10)這句安排在下一次exitframe之後,
因為當你makeScriptedSprite時其實應未實際把SWF load入stage裡,
所以goToFrame會當掉(估計)

>第二個問題是在將flash轉換成image list時,並不能抓到其alpha值。所以現在轉出來的圖貼在stage都是有色塊背景的(汗)。不知道大家有沒有好方法,要不然小弟可能要一個pixel一個pixel來抓出alpha的圖層(汗)。

在flash export 32bit PNG format就有alpha值
作者 : aquastartw(水星)
[ 貼文 15 | 人氣 1813 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/4/11 上午 10:32:18
>試試把spr.goToFrame(10)這句安排在下一次exitframe之後,
>因為當你makeScriptedSprite時其實應未實際把SWF load入stage裡,
>所以goToFrame會當掉(估計)
我一開始也是這麼想,所以加入了
if spr.firstframe = 0 then return
這樣在properties正常前就不會繼續向下跑。但是... 不管幾個frame還是沒有向下跑 (囧)

>在flash export 32bit PNG format就有alpha值
直接拉一個flash sprite在stage上,alpha是正常的。只要ink選了backgroundtransparent。
但是,現在問題是想要把flash抓成一張張的image,做成image list。
用img = spr.member.image抓不到任何東西。所以只要先讓flash sprite畫在stage上,再用img = (the stage).image來抓,但這樣alpha就完全沒有了。問題是出在這。
作者 : dna256(DNA) 人氣指數超過10000點
[ 貼文 160 | 人氣 11884 | 評價 420 | 評價/貼文 2.62 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人aquastartw註記此篇回應為很有道理 2008/4/11 下午 03:31:36
我自己做了個測試stage上面放了A,B兩個button(sprite1 and sprite2)
A button上有以下script:
on mouseUp me
  channel(10).makeScriptedSprite(member("flashmember"), point(200, 200))
end

B button上有以下script:
on mouseUp me
  sprite(10).goToFrame(5)
end

當我按下A button時,flash正常載入,然後再按B button,
flash obj也是正常地去到frame 5,但如果我將A button改成:
on mouseUp me
  channel(10).makeScriptedSprite(member("flashmember"), point(200, 200))
  sprite(10).goToFrame(5)
end
這就會出現error....所以我建議sprite(10).goToFrame(5)這句還是放在另一處"候命"吧

關於flash export to 32bit image問題...
我想知道為何不在flash堛蔣畫xport 32bit png呢?
作者 : aquastartw(水星)
[ 貼文 15 | 人氣 1813 | 評價 0 | 評價/貼文 0 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2008/5/29 下午 01:16:05
感謝大大的解答,「候命」的方式也是用過,但是不知道他什麼時候「候命」完成。

後來我是直接將 .swf 轉換成小 bitmap 存在 .dir 裡用。為何不直接 export 成 png 呢?因為我是想把檔案包起來會比較好整理,而且 .swf 裡可以直接有 frame time 可以抓(簡單來說也就是懶啦... )。
 板主 : Toshi
 > Director/Lingo - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Director/Lingo - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Director/Lingo
1 Toshi 770 
2 DNA 390 
3 ahfun 300 
4 carey阿麒 240 
5 leviathan69 80 
6 b翔 60 
7 Allen 50 
8 Cedric 40 
9 smart 40 
10 JF 40 
Director/Lingo
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
3.027344E-02