国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 媒體動畫 > 正文

Director基礎(chǔ)教程:Shockwave 預(yù)載技術(shù)(3)

2024-09-08 19:27:09
字體:
供稿:網(wǎng)友
shockwave 預(yù)載技術(shù)
   原著:lingoworkshop
   翻譯:alphachi

第二部分:進度條組件

   在上一部分,我們創(chuàng)建了一個“preloader”父代劇本用來:(1)預(yù)載一個url;(2)當預(yù)載完成時發(fā)送一個消息;(3)預(yù)載進行時發(fā)送“狀況”消息。在這一部分,我們將創(chuàng)建一個可以顯示當前狀況(例如預(yù)載完成的百分比)的進度條。

   創(chuàng)建進度條有很多種方法。我們可以使用flash角色、可拉伸的圖形角色、普通的文本角色以及像os controls這樣的xtras提供的相關(guān)組件等,不過在這里,我們選擇了imaging lingo。無論使用何種方法,劇本自身都應(yīng)該能夠?qū)ο铝邢⒆龀鲰憫?yīng):(a)等待連接到服務(wù)器時發(fā)送的mshowworking消息;(b)知道預(yù)載已經(jīng)完成多少時發(fā)送的mshowprogress消息(是一個數(shù)值)。

   當我們將mshowworking消息發(fā)送給下面的劇本時,一個簡單的動畫將被繪制到舞臺上。當我們發(fā)送mshowprogress消息時,這個動畫將被一個簡單的進度條替換。

simple progress bar (v.1)

-- 聲明屬性變量
property mycolour, mycolour2
property mycanvas, myscreenrect, mybuffer, mybufferrect
property mystep, mysegmentsize

on beginsprite me
   thissprite = sprite ( me . spritenum )
-- 確定繪制范圍
   myscreenrect = thissprite. rect
-- 對輸出圖像進行引用
   mycanvas = ( the stage ). image
-- 創(chuàng)建圖像緩沖
   mybuffer = image (myscreenrect. width , myscreenrect. height , 24 )
   mybuffer. copypixels (mycanvas, mybuffer. rect , myscreenrect)
-- 存儲rect以便稍后使用
   mybufferrect = mybuffer. rect
-- 建立動畫運行參數(shù)
   mystep = 0
   mysegmentsize = mybuffer. height - 4
-- 控制其他的角色
sendallsprites ( # mregisterwidget, me , # progressbar)
end

on mshowprogress ( me , amt)
-- 確保amt在0和1.0之間
   amt = min ( 1 . 0 , max ( 0 , amt))
-- 復(fù)制緩沖
   buffer = mybuffer. duplicate ()
-- 繪制邊界
   buffer. draw (mybufferrect, [ # shapetype: #rect , # color: mycolour])
-- 計算基于顯示數(shù)量的填充rect
   progressbarrect = rect ( 2 , 2 , (mybufferrect. width - 2 )*amt, mybufferrect. height - 2 )
-- 填充進度條rect
   buffer. fill (progressbarrect, mycolour)
-- 將運行結(jié)果復(fù)制到舞臺上
   mycanvas. copypixels (buffer, myscreenrect, mybufferrect)
end

on mshowworking ( me )
-- 復(fù)制緩沖
   buffer = mybuffer. duplicate ()
-- 繪制邊界
   buffer. draw (mybufferrect, [ # shapetype: #rect , # color: mycolour])
-- 給屬性變量mystep加1,以便單獨移動stripes
   mystep = mystep + 1
-- 如果繪制部分過大則進行重設(shè)
if mystep > 0 then mystep = -mysegmentsize
-- 創(chuàng)建臨時圖像
   innerrect = buffer. rect . inflate (- 2 ,- 2 )
   innerimage = image (innerrect. width , innerrect. height , 24 )
   innerimage. fill (innerimage. rect , mycolour)
-- 繪制stripes
   l = mystep
repeat while true
     drect = rect (l, 0 , l + mysegmentsize, mysegmentsize+ 2 )
     innerimage. draw ( point (l, 0 ), point ( l + mysegmentsize, mysegmentsize), [ # shapetype: #line , # linesize: 1 , # color: mycolour2, # ink: 2 ])
     l = l + mysegmentsize
if l > buffer. width then exit repeat
end repeat
-- 向緩沖中添加內(nèi)容
   buffer. copypixels (innerimage, innerrect, innerimage. rect )
-- 將運行結(jié)果復(fù)制到舞臺上
   mycanvas. copypixels (buffer, myscreenrect, mybufferrect)
end

on getpropertydescriptionlist ( me )
   pdlist = [:]
   pdlist[ # mycolour] = [ # comment: "bar colour" , # format: #color , # default: rgb ( 68 , 68 , 68 )]
   pdlist[ # mycolour2] = [ # comment: "stripe colour " , # format: #color , # default: rgb ( 255 , 255 , 255 )]
return pdlist
end

   這個簡單的進度條行為本身唯一的作用只是對mshowworking和mshowprogress消息做出響應(yīng),而當beginsprite事件發(fā)生時,它又會發(fā)出一個mregisterwidget消息,這樣做的目的是讓別的對象能夠獲得對其的引用(作為參數(shù)和mregisterwidget消息同時被發(fā)送的“me”引用)。這些對象需要此引用以便進行反饋工作,當然,也可以使用sendsprite和sendallsprite命令實現(xiàn)這一點。

[1] [2] 下一頁  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 调兵山市| 凤山市| 涞源县| 德清县| 阜康市| 扎赉特旗| 体育| 隆昌县| 张家港市| 漠河县| 赤水市| 枞阳县| 桑植县| 红河县| 平顶山市| 彝良县| 朝阳区| 鄂伦春自治旗| 阳西县| 建昌县| 平度市| 龙岩市| 方山县| 晋宁县| 名山县| 湖州市| 灵宝市| 开阳县| 天祝| 突泉县| 莲花县| 潍坊市| 谢通门县| 兴国县| 新乡县| 赤壁市| 平陆县| 铜梁县| 辽阳市| 化州市| 广南县|