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

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

Director實例剖析:Director 8繪制模擬刮胡子演示程序(1)

2024-09-08 19:27:05
字體:
來源:轉載
供稿:網友
director 8制作模擬刮胡子演示程序
  director 8 相對于 director 7 有很多增量型的改動,其中對于 lingo 程序員來說,最引人注目的就是增加了相關的 image lingo 指令。有了它,我們可以做很多以前用 director 7 所無法做到的效果,例如你可以自己編寫一些 transition 過渡效果,還有你還可以編寫類似于 photoshop 的濾鏡效果。這也進一步體現出 director 相對于 flash 的優勢所在--即:對于位圖的強大處理能力。在這里我們將領略一下新增加的 image lingo 命令帶來的強大功能。

有很多人在論壇上討論 director 與 flash 孰優孰劣,無論是國內論壇還是國外討論組,情況都是相同的。雙方的擁護者都盡可能的說服對方自己喜歡的軟件是最棒的,其實在很多情況下這種爭論是沒有任何意義的。我本人兩種軟件都使用,我喜歡用 flash 來做簡單的動畫角色,然后導入 director ,而不是象以前那樣全部在 director 中做 film loop 動畫。做動畫方面, director 確實不如 flash, 但是我還是喜歡使用 lingo 來編寫程序。所以我不會象一個真正的 flasher ("閃客")那樣不停的發掘 flash 的潛力來做出一切效果(盡管有的效果做出來很勉強,或是效率太低,性能較差)。 最近我通過做一個剃須刀演示項目,進一步驗證了 director 在處理點陣圖像方面的確優于 flash。

其實這個項目很簡單: 通過在網頁中拖動剃須刀,將一個的人的面部胡須刮干凈。
這個項目最開始的想法是用 flash 來做。我們的 flash 技術人員最開始的想法是,將這個人臉部胡須部分的照片圖案(矩形區域),細致切分,然后將同一個人的臉部沒有胡須的照片(為了達到頭部圖案完全吻合,我們是在同一張照片上通過 photoshop 做添加胡子的處理)同樣分割為很多相同的小塊,然后作為元素導入 flash。這樣有胡須的部分分為很多小塊,導入 flash ,然后相同的無胡須的部分也分為相同個數的小塊導入 flash ,然后將對應的每一個小塊做一個 mc.
這個 mc 的第一幀放置有胡須的切塊圖案,第二幀放置無胡須的切塊圖案,mc 的第一幀放置 stop action, 當鼠標 over 的時候,讓這個 mc 跳動到第二幀沒有胡須的小切塊。這樣,當用剃須刀做的 mc 替代鼠標后,當它滑動到這些mc(有胡須的小切塊圖案)的時候,他們就會跳到相應第二幀(也就是沒有胡須的小切塊圖案),這樣就可以完成刮胡子的演示了。
方法是很簡單的: 但是實際做起來卻出現了如下的問題。
1:通常這樣的切圖文件必須非常細,才可以滿足客戶的要求,然后切圖越細致就意味在 flash 中要作更多的 mc 和 symbol。 這樣不但增加了文件的大小,而且也使得文件運行特別慢。
2:由于這種方法制作的切圖大小是開始定好的,如果希望將切塊更加細分的話,你必須從新切圖和導入。必須重復勞動。
3:這種方法制作 swf 文件通常比 director 制作的 dcr 文件大不少(至少是一倍)。

而采用 director 8 的 image lingo 指令,你可以完全的避免上述問題。

制作方法如下:

所需的素材:
一張沒有刮胡子的照片位圖,和一張同一個人刮完胡子的照片位圖。(為了版權問題,我將臉部部分去掉,保留胡須部分的位圖圖案。)見圖如下:

圖形 1 face.jpg 圖形 2 faceoff.jpg

接著我們開始介紹程序部分,這段程序非常的短小,核心部分的代碼總共 6 行。然是為了理解這六行代碼,你需要了解 director 8 新增加的 image lingo 的一個核心函數,這就是 copypixels
copypixels 的功能就是將位圖數據從一個 image 復制到另一個 image。
現在任何一個 director 角色(member)都有一個 image 的屬性,這是很多人忽略的地方。這個 image屬性是內存中的一個圖形對象的引用,而這個圖形對象是角色成員的一個圖形表示。角色成員可以是 位圖,flash 角色,文字角色,甚至是舞臺 stage. 我把剛剛導入的兩個位圖角色起名為 source (刮完胡子的照片位圖 face.jpg)和 targer (未刮完胡子的照片位圖 faceoff.jpg)

在 director 中角色分布圖如下:

control + m 打開 director 中的消息窗口,輸入
put member("source").image
n <image:1d151c> -- 1d151c 就是該 image 對象在內存中的地址。

而 image 屬性是對實際數據的一個引用。而 image 圖形對象是角色成員在內存中的實際數據。
任何對 image 對象的改動都是對 cast 中相應的原始角色的改動。這一點要注意,除非 image 對象是你自己創建的而且和角色成員不相關聯,否則必須注意不要意外改動的原始角色成員。
你可以調用 image() 函數來創建自己的對象。實例如下:
image (width, height, bitdepth)
thisimage = image (320,240,16)
你現在創建了一個寬為 320 pixel 高為 240 pixel ,位深為 16 bit 圖形對象。

你可以用 copypixels 函數來給圖形對象添加數據。該函數的格式如下(這是本程序的關鍵):
targetimage.copypixels(sourceimage, destinationrect, sourcerect, <parameters>)
該函數功能是通過目標圖形對象調用 copypixels 函數,將 源圖形對象,從源圖形對象的矩形區域 sourcerect 復制到 目標圖形對象的矩形區域destinationrect。

  以本程序為例子,我們的目的: 程序記錄鼠標移動的軌跡,從鼠標滑動的點為左上角開始,記錄一個虛擬的矩形區域,將這個矩形坐標(相對與該圖形左上角為原點)記錄下來。然后通過targetimage (就是我們這個程序的角色 "target "-未刮胡子的照片圖案)調用 copypixels 函數將 source

[1] [2] 下一頁  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 商水县| 漳浦县| 偃师市| 兰考县| 盐源县| 内江市| 甘谷县| 博罗县| 武穴市| 庐江县| 岚皋县| 建宁县| 北辰区| 建瓯市| 平湖市| 翁源县| 武川县| 淮阳县| 邹平县| 德钦县| 龙游县| 白城市| 方山县| 新疆| 淮北市| 江山市| 高台县| 延安市| 海口市| 保康县| 汾阳市| 东平县| 和平县| 彭水| 奉新县| 安陆市| 东宁县| 长治市| 任丘市| 桓仁| 融水|