麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > 媒體動畫 > 正文

Director實例剖析:Director 動態事件傳遞(2)

2024-09-08 19:27:03
字體:
來源:轉載
供稿:網友
director 動態事件傳遞
   那么更下層的其他角色該怎么辦呢?忽略它們嗎?也就是說,為什么不將此事件傳遞給所有下層的角色呢?

   我們必須考慮的很重要的一點就是運行時間問題。director允許在單幀中顯示多達1000個角色,所以為了從一個行為中傳遞此事件,我們可能需要測試999次。

   但其他一些事件也有可能發生,像mousedown、mouseenter等等,忽略它們并不是一個好的想法,因此可以在getpropertydescriptionlist中添加一些參數,以允許我們確定哪些事件將獲得消息,哪些事件不獲得消息。

   最后,我們還應考慮到可見性和運動狀態。因為director是一個動態的工作環境,角色有時會重疊,有時不會重疊,所以最好能夠動態偵測交疊狀態,此外還可以添加一個參數,以使我們能夠選擇是否給一個已設置為不可見的角色發送事件。

   下面的影片包含了一個基本完成的行為,允許director動態判定一個給定角色是否正和當前角色及鼠標位置交疊,一旦如此,行為將向底層角色發送指定的任何事件。


播放,以上示例,需下載此插件。 點擊下載插件

   稍后的director影片使用了此行為的一個修改版本。原來的行為認為舞臺上沒有動畫發生,雖然這樣的行為已經非常適合于靜態使用了,但稍后的版本更適合于動態使用。

   當然,你可以根據自己的需要添加其他參數,以最大限度的提高代碼庫的利用率。


播放,以上示例,需下載此插件。 點擊下載插件

   就象你看到的那樣,背景動畫并不會導致行為失效,因為它能夠很清楚的判定兩個矩形何時交疊,何時不交疊,并做出恰當的響應。

   下面是最終影片中完整的“動態事件傳遞”行為的全部代碼。

property pnintersectsprite
property pbpropagatemousedown
property pbpropagatemouseup
property pbpropagatemouseenter
property pbpropagatemouseleave
property pbpropagatemousewithin
property pbpropagaterightmousedown
property pbpropagaterightmouseup
property pbpropagatetoinvisiblesprite
property pbassumestaticstage

on beginsprite me
me .findlowersprite()
end beginsprite

on mousedown me
if pbpropagatemousedown = true then
me .transmitevent( #mousedown )
end if
end mousedown

on mouseup me
if pbpropagatemouseup = true then
me .transmitevent( #mouseup )
end if
end mouseup

on mouseenter me
if pbpropagatemouseenter = true then
me .transmitevent( #mouseenter )
end if
end mouseenter

on mouseleave me
if pbpropagatemouseleave = true then
me .transmitevent( #mouseleave )
end if
end mouseleave

on mousewithin me
if pbpropagatemousewithin = true then
me .transmitevent( #mousewithin )
end if
end mousewithin

on rightmousedown me
if pbpropagaterightmousedown = true then
me .transmitevent( #rightmousedown )
end if
end rightmousedown

on rightmouseup me
if pbpropagaterightmouseup = true then
me .transmitevent( #rightmouseup )
end if
end rightmouseup

on findlowersprite me
   pnintersectsprite = 0
if pbassumestaticstage = true then
     nsprite = me . spritenum - 1
     rmyrect = sprite ( me . spritenum ). rect
repeat with ntest = nsprite down to 1
       rtestrect = sprite (ntest). rect
       rintersect = intersect ( rmyrect, rtestrect )
if rintersect <> rect ( 0 , 0 , 0 , 0 ) then
         pnintersectsprite = ntest
exit repeat
end if
end repeat
end if
end findlowersprite

on transmitevent me , yevent
   pmousepoint = the mouseloc
if pnintersectsprite <> 0 then
     rtestrect = sprite (pnintersectsprite). rect
if pmousepoint. inside ( rtestrect ) then
if sprite (pnintersectsprite). visible = true or ( sprite (pnintersectsprite). visible = false and pbpropagatetoinvisiblesprite = true ) then
sendsprite ( pnint

[1] [2] 下一頁  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品久久久久久久久久久久久久 | 欧美大片一级毛片 | 性爱视频免费 | 亚洲国产高清一区 | 亚洲精品无码不卡在线播放he | 福利免费在线 | 特片网久久 | 国产乱淫av片免费 | 亚洲精品av在线 | 国产精品视频 | 国产成人羞羞视频在线 | 午夜热门福利 | 久色精品视频 | 欧美成人精品一区 | 国产一级性生活视频 | 黄色特级一级片 | 欧美日韩夜夜 | 欧美综合在线观看视频 | 成人精品| 久久久中文 | 国产黄色免费网站 | 一级毛片播放 | 色婷婷一区二区三区 | 久久久www成人免费毛片 | 欧美乱码精品一区 | 一区二区三高清 | 中文字幕在线观看视频www | 中文字幕网址 | 久久综合婷婷香五月 | 日韩免费黄色 | 性爱视频免费 | 羞羞草视频 | 国产一国产精品一级毛片 | 午夜视频色 | 欧美成人精品一区二区 | 国产免费一区二区三区网站免费 | 91在线视频网址 | 免费午夜视频 | av7777777| 日本高清视频网站www | china对白普通话xxxx |