參考這邊
http://blog.open-design.be/2010/08/04/lightning-effect-in-flash-as3/
裡面也有精美的DEMO可以看
星期二, 5月 03, 2011
星期一, 8月 09, 2010
Flash Scene - 多場景互動
在開發flash 的時候,用多個場景可以讓版面和時間軸保持乾乾淨淨~
可是今天發現不同場景互相呼叫 function 的時候,被呼叫的 function 會跑到呼叫者的場景
而不同場景上的元件是不能互相存取的! (這個部分是經驗而已,有誤請不吝指正:D)
以下舉個例子:
scene1 - function1 { call mc1; call function2; }
\ mc1
scene2 - function2 { call mc2; }
\ mc2
依此例來討論,function1 呼叫 function2 的時候, function2 會在 scene1 中被執行
如此一來就會發生錯誤,因為 scene1 中並沒有 mc2
解決辦法:
在 function2 第一行插入 gotoAndStop(1, "scene2");
則會先跳轉到 scene2 後才會執行接下來的程式碼 就不會出現錯誤
另外附上從 ActionScript 3.0 語言和組件參考 中列出場景的範例
for (var i:uint = 0; i < MovieClip(root).scenes.length; i++)
{
var scene:Scene = MovieClip(root).scenes[i];
trace("scene " + scene.name + ": " + scene.numFrames + " frames");
}
可是今天發現不同場景互相呼叫 function 的時候,被呼叫的 function 會跑到呼叫者的場景
而不同場景上的元件是不能互相存取的! (這個部分是經驗而已,有誤請不吝指正:D)
以下舉個例子:
scene1 - function1 { call mc1; call function2; }
\ mc1
scene2 - function2 { call mc2; }
\ mc2
依此例來討論,function1 呼叫 function2 的時候, function2 會在 scene1 中被執行
如此一來就會發生錯誤,因為 scene1 中並沒有 mc2
解決辦法:
在 function2 第一行插入 gotoAndStop(1, "scene2");
則會先跳轉到 scene2 後才會執行接下來的程式碼 就不會出現錯誤
另外附上從 ActionScript 3.0 語言和組件參考 中列出場景的範例
for (var i:uint = 0; i < MovieClip(root).scenes.length; i++)
{
var scene:Scene = MovieClip(root).scenes[i];
trace("scene " + scene.name + ": " + scene.numFrames + " frames");
}
星期二, 4月 13, 2010
水草漂動 / 樹葉搖晃 的效果 DisplacementMapFilter, perlinNoise
Perlin noise是一種產生雜訊點陣圖的一種演算法
是由Ken Perlin所發明的
原本的目的是為了1982年的電影Tron(電子世界爭霸戰)所開發的演算法
這種雜訊是用來模擬火焰、煙霧、水波的效果
Ken Perlin因為開發了這個演算法而得到了1997年的奧斯卡技術成就獎
Perlin noise原本是產生2D雜訊,但是隨著產業界的需求之增加
後來出現了3D版本的Perlin noise,可以模擬3D的火焰等特效
通常要模擬水波、飄動的特效
會使用Perlin noise搭配所謂的displacement map特效
也就是Flash裡面的DisplacementMapFilter
這個特效是用來扭曲變形一張圖用的
所以應該可以達到你說的水草飄動效果(其實是扭曲)
要使用displacement map特效需要兩張尺寸一樣的圖
第一張是原圖,第二張是扭曲參考圖
而這張參考圖我們要使用Perlin noise
轉載自 #19OYjs7P (Flash) [ptt.cc] cjcat2266
以下是西街貓(cjcat2266)附上的參考
KeyWord: DisplacementMapFilter, perlinNoise
參考資料
#19OYjs7P (Flash) [ptt.cc] cjcat2266
#19OZ7PwE (Flash) [ptt.cc] cjcat2266
是由Ken Perlin所發明的
原本的目的是為了1982年的電影Tron(電子世界爭霸戰)所開發的演算法
這種雜訊是用來模擬火焰、煙霧、水波的效果
Ken Perlin因為開發了這個演算法而得到了1997年的奧斯卡技術成就獎
Perlin noise原本是產生2D雜訊,但是隨著產業界的需求之增加
後來出現了3D版本的Perlin noise,可以模擬3D的火焰等特效
通常要模擬水波、飄動的特效
會使用Perlin noise搭配所謂的displacement map特效
也就是Flash裡面的DisplacementMapFilter
這個特效是用來扭曲變形一張圖用的
所以應該可以達到你說的水草飄動效果(其實是扭曲)
要使用displacement map特效需要兩張尺寸一樣的圖
第一張是原圖,第二張是扭曲參考圖
而這張參考圖我們要使用Perlin noise
轉載自 #19OYjs7P (Flash) [ptt.cc] cjcat2266
以下是西街貓(cjcat2266)附上的參考
var bmpd:BitmapData = new BitmapData(180, 280);
var bmp:Bitmap = new Bitmap(bmpd);
bmp.x = 180;
addChild(bmp);
var dmf:DisplacementMapFilter = new DisplacementMapFilter(bmpd, new Point(), 1, 2, 20, 20, "clamp");
addEventListener(Event.ENTER_FRAME, update);
function update(e:Event):void
{
bmpd.perlinNoise(200, 200, 2, 0, false, false, 3, false, [new Point(0, getTimer() / 50), new Point(20 * Math.sin(getTimer() / 1000), getTimer() / 20)]);
sw2_mc.filters = [dmf];
}
KeyWord: DisplacementMapFilter, perlinNoise
參考資料
#19OYjs7P (Flash) [ptt.cc] cjcat2266
#19OZ7PwE (Flash) [ptt.cc] cjcat2266
星期六, 3月 20, 2010
FlashDevelop的版型
最近突然覺得FlashDevelop一開始的Title資訊不夠多
要怎麼改呢?
開啟設定資料夾: Tools -> Application Files
Templates -> AS3.fdt
裡面就可以改版型了!
變數的部分在: Tools -> Custom Arguments 裡面增加
要怎麼改呢?
開啟設定資料夾: Tools -> Application Files
Templates -> AS3.fdt
裡面就可以改版型了!
變數的部分在: Tools -> Custom Arguments 裡面增加
星期六, 2月 27, 2010
ActionScript 3.0 中的 stage, root, MainTimeline
學了不算短的Flash還是沒有很瞭解stage, root, MainTimeline的差異
swf.com.tw - ActionScript 3.0里的stage(舞台), root和MainTimeline(主時間軸)
這篇的解釋非常詳細,也讓我很清楚的瞭解其中的差異
另外也做了個小實驗,發現Flash和Flex指的是不同的東西:
flash 下
trace(this, this.root, this.stage, root, stage, this==this.root, this.root == root, this.stage == stage);
[object Story] [object Story] [object Stage] [object Story] [object Stage] true true true
flash builder 4 下
trace(this, this.root, this.stage, root, stage, this==this.root, this.root == root, this.stage == stage);
WebometricsRanking null null null null false true true
swf.com.tw - ActionScript 3.0里的stage(舞台), root和MainTimeline(主時間軸)
這篇的解釋非常詳細,也讓我很清楚的瞭解其中的差異
另外也做了個小實驗,發現Flash和Flex指的是不同的東西:
flash 下
trace(this, this.root, this.stage, root, stage, this==this.root, this.root == root, this.stage == stage);
[object Story] [object Story] [object Stage] [object Story] [object Stage] true true true
flash builder 4 下
trace(this, this.root, this.stage, root, stage, this==this.root, this.root == root, this.stage == stage);
WebometricsRanking null null null null false true true
星期一, 2月 15, 2010
ActionScript3.0 中的事件流(Event)
說要記錄一下自己對AS3事件的心得
可是拖了好久..想寫什麼大概也忘了
手邊有一些資料,姑且記錄一下吧~
以下節錄自SILK ROUTE - AS3筆記-事件流(event flow)
寫的很棒,非常建議先讀過
可是拖了好久..想寫什麼大概也忘了
手邊有一些資料,姑且記錄一下吧~
以下節錄自SILK ROUTE - AS3筆記-事件流(event flow)
寫的很棒,非常建議先讀過
星期日, 2月 07, 2010
星期四, 2月 04, 2010
AS3 的 Dictionary Class
一開始還有點搞不懂Dictionary到底是什麼
後來發現她就跟Object一樣是hash表
不過有點不一樣的是,Dictionary可以用Object當作Key..
實在太神奇了XD
節錄Kimo Chung's AS3 Playground - 秘技: 用Sprtie & Dictionary 熷加自定的variables 而不改變Sprite 的結構的例子
使用Dictionary 和Array 有何分別呢?
Array 使用object.toString() 作為index, 因此若果有兩個Sprite 的名稱相同, 會使用同一格
延伸閱讀
Ticore's Blog - AS3 Dictionary 居然無法用 QName 當 Key
後來發現她就跟Object一樣是hash表
不過有點不一樣的是,Dictionary可以用Object當作Key..
實在太神奇了XD
關聯數組有時候也稱為「哈希」或「映射」,它使用「鍵」而非數字索引來組織存儲的值。關聯數組中的每個鍵都是用於訪問一個存儲值的唯一字符串。關聯數組為 Object 類的實例,也就是說每個鍵都與一個屬性名稱對應。關聯數組是鍵和值對的無序集合。在代碼中,不應期望關聯數組的鍵按特定的順序排列。
ActionScript 3.0 中引入了名為「Dictionary」的高級關聯數組。字典是 flash.utils 包中 Dictionary 類的實例,使用的鍵可以為任意數據類型,但通常為 Object 類的實例。換言之,字典的鍵不侷限於 String 類型的值。
as3,Dictionary,關聯數組
節錄Kimo Chung's AS3 Playground - 秘技: 用Sprtie & Dictionary 熷加自定的variables 而不改變Sprite 的結構的例子
使用Dictionary 和Array 有何分別呢?
Array 使用object.toString() 作為index, 因此若果有兩個Sprite 的名稱相同, 會使用同一格
var myPictureIndexDict = new Dictionary;
var myPictureIndexArray = new Array;
var a = new Sprite;
a.name = "myName";
myPictureIndexDict[a] = 1;
myPictureIndexArray[a] = 1;
var b = new Sprite;
b.name = "myName";
myPictureIndexDict[b] = 2;
myPictureIndexArray[b] = 2;
trace(myPictureIndexDict[a]); //output: 1
trace(myPictureIndexArray[a]); //output: 2
延伸閱讀
Ticore's Blog - AS3 Dictionary 居然無法用 QName 當 Key
星期二, 2月 02, 2010
星期六, 1月 30, 2010
星期三, 1月 27, 2010
星期一, 1月 18, 2010
星期四, 1月 07, 2010
星期一, 1月 04, 2010
圖片點陣化效果
用 BitmapData 配合 Matrix 的 scale 繪製小 size 的點陣圖;
再把 attach 這張圖的 MovieClip 給拉大。
milkmidi老師的Demo
引用自
馬克.凡 の ActionScript 學習筆記
再把 attach 這張圖的 MovieClip 給拉大。
milkmidi老師的Demo
引用自
馬克.凡 の ActionScript 學習筆記
星期日, 1月 03, 2010
星期四, 12月 31, 2009
flash 文字樣式
動態文字:動態文字包括從外部來源 (例如文字檔案、XML 檔案,或甚至包括遠端網路服務) 載入的內容。
輸入文字:輸入文字是指使用者輸入的任何文字,或是使用者可以編輯的動態文字。您可以設定樣式表來格式化輸入的文字,或使用 flash.text.TextFormat 類別為輸入內容的文字欄位指定屬性。如需詳細資訊,請參閱擷取文字輸入。
靜態文字:只能使用編寫工具才能建立靜態文字。您不能使用 ActionScript 3.0 來建立靜態文字實體,但是您可以使用 ActionScript 類別 (如 StaticText 和 TextSnapshot) 來操作現有的靜態文字實體。如需詳細資訊,請參閱使用靜態文字。
輸入文字:輸入文字是指使用者輸入的任何文字,或是使用者可以編輯的動態文字。您可以設定樣式表來格式化輸入的文字,或使用 flash.text.TextFormat 類別為輸入內容的文字欄位指定屬性。如需詳細資訊,請參閱擷取文字輸入。
靜態文字:只能使用編寫工具才能建立靜態文字。您不能使用 ActionScript 3.0 來建立靜態文字實體,但是您可以使用 ActionScript 類別 (如 StaticText 和 TextSnapshot) 來操作現有的靜態文字實體。如需詳細資訊,請參閱使用靜態文字。
訂閱:
文章 (Atom)