跳到主要內容

發表文章

目前顯示的是 2009的文章

米蘭數位徵Flash ActionScript互動技術助理

Flash ActionScript互動技術助理(需求人數:1人)
徵求對於Flash互動程式設計有熱情夥伴
如果你:
1. 熟悉AS2或略懂AS3
2. 期望和一個專業團隊一同合作
3. 對於互動技術有強烈的企圖心及學習心
歡迎加入我們!

這份工作的內容主要是:
1. 編寫一般互動機制的flash
2. 協助資深互動設計師完成專案

面試時請提供自己的作品做為參考

聯絡人:jason@mail.medialand.com.tw
原文連結:
http://medialand.com.tw/blog/article.asp?id=1007

FlashCS4+MVC+CoverFlow效果

FlashCS4+MVC+CoverFlow效果
最近K了一些MVC的文章和技術
發現這樣的規畫真的很好用
Model:記錄變數,數值,發送事件。
View:跟Model要資料, 然後呈現。
Controller:用來改變Model的數值。
再加上之前學生的提到奶老師我所寫的CoverFlow跟真的效果有些不同
之前製作的方法:
是直接讓物件Tween到目標位置,這樣就不會整個連慣。
前一版:
http://milkmidi.blogspot.com/2009/03/flash10coverflow.html
現在改成新的寫法
點選任何物件,一定都會經過中間變大的過程。




SourceCodeDownload


2009/12/28新增
點擊正中間的圖片時, 會超連結, 網址定義在xml裡, 請重新下載原始碼

Progression3 Verbose中文說明檔

Progression在使用時
只需要開啟
Verbose.enabled = true;
即可以有debug功能, 完整的場景轉場的資訊, 可惜只有日文版本才有
奶小茶我補上了中文說明, 這樣學習起來更方便
ProgressionVerbose中文說明修正檔
下載後, 解壓縮, 將 jp 資料夾 copy 到本來的類別路徑蓋掉即可
我只有增加
jp\progression\core\debug\VerboseMessageConstants.as
這裡的說明而己, 其他都沒更動。

如果發現Command的資訊太多, 只要濾掉Commnad,不要trace就好
Verbose.filteringCommand();

FLASH IFrame

FLASH能支援的html標籤有限,即使用了FLASH Player10,還是不能完整的呈現
那就在html動手腳吧
原理其實就是用div加上Iframe,只是呼叫的動作交給FLASH
Flex版可以參考這個網站:
http://code.google.com/p/flex-iframe/
奶小茶我改成用FLASH製作
注意喔, 因為swf wmode使用了opaque或是transparent模式
在特定的Browser下不能輸入中文字
as3 sourceCode Download
as2 sourceCode Download

facebook share小心得

最近每個案子都一定要來非死不可一下
也來分享一下最近的share小心得
先了解一下share的原理:
http://www.facebook.com/sharer.php?u=+ 要分享的網址 + "&t=" + 標題;
當使用者按下上方這段網址時, 就會自動連到facebook, 如果是登入的狀態下, 就可以看到下方的畫面

網址:就是上方的 要分享的網址
縮圖:只要在你的網站上加入一段meta的資訊, 如下
<link rel="image_src" type="image/jpeg" href="http://www.absolut-rock.com.tw/images/fb200x150.jpg">
只要把href換成你的圖片路徑即可
這裡有個小地方要注意, 如果facebook抓到一次這張圖後, 會被快取住, 之後再換圖片別人還是會看到舊的圖片喔。
決解方法就是換一個分享路徑, 比如說加個/index.html 或是 /index.aspx之類的,讓facebook認為是新的網站。
內文:會去抓網站裡的meta description的內文。
但是不是就變成每個人按下時, 圖片和內文都是一樣的呢?
如果是直接分享, 當然是呀,但我們可以用一個小技巧, 做到每個人分享時都是客製化的縮圖和內文
寫一隻轉址的程式就可以
本來分享的網址是:xxxx/index.aspx
換成xxxx/fb.aspx,再多帶一些參數
好比:fb.aspx?id=3,
該程式只要判斷id值是什麼, 然後該對映的圖片和meta丟到網頁裡
同時加寫轉址回去到index.aspx
因為檔名不同了, facebook會認為是新的路徑, 就會來抓新的資訊, 但不會被轉址
而使用者點了該網址, 就又會回到正式的網址上。就可以達到這樣的功能
還有一點, 全flash的網站, 我們經常會使用swfAddress來做到單元獨立網址的功能。
但#號會被facebook給濾掉, 就無法正常使用
一樣可以用轉址的方法, 轉回正確的網站。
可以參考
http://www.absolut-rock.com.tw
我就是用這樣的轉址方法決解#號問題

阿奶SlideMove 2號組件

阿奶ScrollBar 1號
接著發怖阿奶SlideMove 2號,
功能需求很單純, 在一定的範圍內, 對指定的物件依滑鼠座標位置來滑動
1.安裝mxp檔:
http://milkmidi.googlecode.com/files/milkmidiComponents.mxp
2.開啟組件面版:


3.將組件拉到場景上, 此時一樣有對映的參數來做即時preview,
直接對該組件縮放即可調整移動的範圍

4.開啟參數面版, 選擇移動方向, 實體物件。

5.配置完成啦

Flash組件一步一步來

這篇來分享一下關於製作Flash的組件
在這兒我們練習製作一個定位用的組件
參數面版上有定位的基準點和偏移值。
組件本身也是一個 MovieClip 類別, 因為要對stage做偵聽
所以一開始要去偵聽addedToStage事件。
1.AlignComponent.as
package milkmidi.tutorial { import flash.display.MovieClip; import flash.events.Event; public class AlignComponent extends MovieClip{ public function AlignComponent() { addEventListener(Event.ADDED_TO_STAGE , _addedToStageHandler); addEventListener(Event.REMOVED_FROM_STAGE , _removedFromStageHandler); } private function _addedToStageHandler(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, _addedToStageHandler); stage.addEventListener(Event.RESIZE , _resizeHandler); trace(this, "_addedToStageHandler"); _resizeHandler(); } private function _resizeHandler(e:Event = null):void { } private function _removedFromStageHandler(e:Event):void { removeEventListener(Event.REMOVED_FROM_STAGE, _removedFromStageHandler); stage.removeEventListener(Event.RESIZE , _resizeHandler); } } }
2.先在畫面上繪製一個色塊(50x50),將其轉成Movi…

阿奶ScrollBar1號

阿奶ScrollBar 1號 1.0Beta版
ScrollBar應該是Web界使用率最高的王吧
為了讓眾設計們在不想寫程式的情況下, 又想要有ScrollBar, 所以組件就產生了
下載mxp
啟動Adobe Extension ManagerCS3 (或是CS4), 並安裝該mxp


啟動 Flash , 開啟組件面版
Window > Components > Component Panel


將 ScrollComponent拉到場景上, 此時框會是紅色的, 表示參數不完整


將所需要用到的四個元素分別取上實體名稱


啟動參數面版, 依序輸入對映的名稱, 完畢後, 組件的框會變回黑色。


發怖就完成啦。
酷。
Example Download

Absolut X Rock The World 絕對 搖滾革命

新案上線 Absolut X Rock The World 絕對 搖滾革命
http://www.absolut-rock.com.tw/
這次在技術上又是一大突破, 感謝馬克的支援
輸入網頁, 伺服器拍圖, Flash載入
開始搖滾革命。
Box2D音樂互動, 可以拉方塊, 可以自己畫方塊
3D Zoom
萬花筒效果
扭曲變型成 Absolut 瓶子
這次的框架是使用 Progression 4.0 Beta1.2版
跟3.62版比起來, 新版本的程式碼更精簡,
Progression4.0 組件的介紹可以參考以下的網址:
http://flabaka.com/blog/?p=1916
新版本的組件增加了livepreview功能, 當你更改組件裡的參數時, 場景上的組件也會一拼更動
這樣一看就知道組件的參數,
增加了 AdjustLayout 組件, 只要參數打一打, 就可以針對滿版來定位, 太好了
連程式碼都不用寫,酷,期待他正式版的到來
當然也發現了一個小Bug, 使用4.0版時, Preloader.as 去載入主 swf 時
在 IE7 下會發生 Error #2044: 未處理的 ioError:。 text=Error #2036: 尚未載入完成。
但其他Browser下都是正常的, 有空再來查查好了
在facebook share時, 遇到#號, 會自動被濾掉, 這樣swfAddress就會失效
所以要加寫一個轉址用的aspx,
分享時, 使用者貼的網址是:轉址用的aspx?id=值&其他變數=值,
點擊該網址後, 再轉回真正的網址:
如:index.aspx/#rock/?id=值&其他變數=值
這樣也可以間接做到每位使用者按下share時, 圖片和Meta都可以不同喔。






PV3D Break轉場特效

一樣是使用3D物件100%的程現方法
先使用BitmapData畫二個畫面
再丟給PV3D去細切成很多個Plane
同時轉動Plane和Camera,就可以有這樣的效果。
PV3D CameraOrbit - wonderfl build flash online

繪製透明色塊

flash8之後加入了BitmapData類別
從此能搞的效果越來越多,
在這兒介紹一下如何繪製透明色塊
原理很簡單, 在現成的BitmapData物件上, 將另一個透明的BitmapData加上去即可
在 flash 裡使用 copyPixels



/* * author milkmidi * http://milkmidi.com * http://milkmidi.blogspot.com */ package { import com.bit101.components.PushButton; import flash.display.*; import flash.events.MouseEvent; import flash.geom.Point; import flash.geom.Rectangle; [SWF(width = "465", height = "465", frameRate = "41", backgroundColor = "#dddddd")] public class Eraseandredraw extends Sprite{ [Embed(source = 'assets/Demo320x320.jpg')] public static const Texture:Class; private var _container :Sprite; private var toolsize :int = 40; private var tooloffset :int = toolsize * .5; private var origbmp :BitmapData; private var drawbmp :BitmapData; private var erasebmp :BitmapData; private var _cicleMC :Sprite = new Sprite(); public function Eraseandredraw() { _cicleMC.graphics.beginFill(0); _cicleMC.graphics.drawCircle(20, 20, 20); _cicleMC…

milkmidiV4.0.0面版發怖

V4 面版發怖了, 整合V3版的功能
選項全都換成Icon, 比較不會暫版位
milkmidiV4 Flash Panel



First row
Ro:
round x y
選取場景上的物件(可多選), 座標變整數

Cp:
copy position
選取場景上一個物件, 將其座標暫存

Pp:
paste stored postion
選取場景上的物件(可多選), 將座標設定為經由Cp功能所複製的值

Na:
name by position
選取場景上的物件(可多選), 依序取名其實體名稱
按下後會再出現一個設定面版
Prefix: 新名稱
index: 起始值(數字)
Layout: 由什麼方向開始命名
Left To Right 左到右
Top to Buttom 上到下

Dl
duplicate layer
重製一個所選取的圖層


Second row
Fs:
find symbol in library
選取場景上一個物件, 找到對映的元件庫索引


Hb:
hitArea Button
建立只有感應區範圍的 Button 元件
畫一個色塊, 按下此功能即可

La:
label
選取場景上一個物件, 為其增加一個文字表籤
發怖後, 該文字會自動消失, 主要是在fla階段時方便找元件


Cl:
change class name
單選物件時, 可以直接更改 Class 和 BaseClass
多選物件時, 可以直接更改多物件的 BaseClass

Tn:
trace selected name
選取場景上的物件(可多選), 將其實體名稱輸出到面版上
方便寫as時使用

Sb:
smoothing bitmap
選取場景上一個點陣圖 ,
或是多選元件庫裡的元件
開啟平滑化功能

flash right click

Flash按下右鍵, 會出現預設的選單, 從Flash7之後, 裡面的選單功能能自定, 但還是有固定的二個選單一定會出現,
假設想要知道使用者按下右鍵, 同時選單不要出來的話
可以參考這個網站:
http://www.uza.lt/rightclick/
原理是使用JS, 當使用者按下右鍵時, 就呼叫Flash裡的函式。
這樣在開發Game時又多了一個選擇。
但還是有個小問題,因為Flash的wmode模式必需設為transparent或是opaque
這樣在特定的Browser下是不能輸入中文的。

氣泡事件與客製化事件

AS3最好用的就是新的事件流
而且可以使用氣泡事件的方法, 一路往上打, 非常的好用
不要再寫像是AS2的 parent.parent.parent.gotoAndPlay(2)了

假設場景結構如下
Stage MainTimeline Loader(載入Child.swf)
當Child.swf裡的按鈕被按下時, 主時間要開始播放
可以用類似AS2的寫法是 MovieClip(parent.parent).gotoAndPlay(2);

AS3,可以叫Child.swf發送氣泡事件往上層打, 一路的可視可件都可以偵聽的到。
如果想要發事件時, 一起帶個參數出去
可以寫個 get 的屬性, 透過偵聽者函式 e.target即可得到發出事件者
或是可以發送一個客製化的事件, 就不需要寫 get 屬性。


Child.swf Child.as
該swf上有二個按鈕, 名稱為:btn_mc , btn2_mc
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import milkmidi.CustomEvent; /** * ... * @author milkmidi */ public class Child extends Sprite { public var btn_mc :MovieClip; public var btn2_mc :MovieClip; private var _msg :String = "我是Child.swf的變數"; public function Child() { btn_mc.buttonMode = true; btn_mc.addEventListener(MouseEvent.CLICK , _btnClickHandler); btn2_mc.buttonMode = true; btn2_mc.addEventListener(MouseEvent.CLICK , _btn2ClickHandler); } private function _btnClickHand…

二篇很實用的Facebook App開發心得

最近的 facebook 非常的火紅, 什麼活動都想辦法要跟 fb 結合一下
必竟朋友之間的傳遞是最有效的廣告
我自己只研究了一點點的fb app應用, 還沒有很熟
有興趣的朋友可以先參考這二篇教學, 寫的很清楚喔
Jason
http://blog.iamjason.com/2009/09/facebook-flash-application4.html
網路基因
http://blog.webgene.com.tw/?p=1085

stage與AddedToStage

無法取存 null 的參考屬性或方法
這大概是 AS3 最常出現的 error
最容易發生在 stage 的屬性使用
所有的 DisplayObject 物件都有
parent(上一層的容器)
root(該swf的最上一層容器)
stage(唯一的 Stage 類別)
但這三個屬性一開始都是 null
一定要當該可視物件被加入到清單裡, 屬性才會有值
var _mc:MovieClip = new MovieClip(); _mc.parent; _mc.root; _mc.stage; //通通都是 null var _spr:Sprite = new Sprite(); _spr.addChild(_mc); _mc.parent; //可以得到 _spr物件, 因為被加入了 //但root和stage還是null //this是主時間軸 this.addChild(_spr); //這時_mc.root, _mc.stage才會有值。 而在寫 Class 時也一樣
package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main() { trace(stage); //如果直接執行該swf, stage是有值的 //但如果是被載入, stage一開始是null //要避免這樣的問題, 就直接偵聽 AddedToStage 事件即可 if (stage) init(null); else addEventListener(Event.ADDED_TO_STAGE , init); } private function init(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, init); //把要做的事寫在這兒 //這樣就可以確保 stage 屬性一定有值 } } }

米蘭數位2010強力徵才

2010強力徵才 資深網頁設計師+資深創意企劃+網路媒體企劃+專案執行+行政助理
因應2010年之業務發展需求及組織調整
米蘭2010年強力大徵才行動開始囉!!!
如果你(妳)對數位行銷有相當的興趣與熱忱
能體認這行業的辛酸甘苦 歡迎您來一同在浪頭上向前進!
原文網址:
http://medialand.com.tw/blog/article.asp?id=1007

使用mxml來製作Flash

一般來說, 要產生swf格式有很多方法
1.直接使用Flash發怖.fla , 但大部份 Flex mx 類別都無法使用
2.使用 Flex 標準 mxml發怖, 但檔案 200k 起跳
經過不斷的爬文, 發現 mxml 只是一個序述的格式, 也就是可以完全的客製化表籤名稱
這樣就可以使用 mxml 來寫 as, 只要不用到 mx 類別, 就不會變胖。
參考了這幾個網站得來的心得:
http://www.ryancampbell.com/2009/08/26/using-mxml-without-flex-example-and-source/
http://pv3d.org/2009/03/17/mxml-without-the-flex-framework/
最好用的當然是 Bindable 了呀
只要寫{xxxx}就可以直接挷定, 不需再像寫.as一樣寫一大堆了。
而視覺元件可以用Flash製作成.swc來使用
程式碼:

MXMLContainer基底用的類別, 是 extends Sprite不是UIComponent喔
<br />package milkmidi.mxml { <br /> import flash.display.DisplayObject;<br /> import flash.display.Sprite; <br /> [DefaultProperty("children")]<br /> public class MXMLContainer extends Sprite { <br /> private var _children :Array; <br /> public function MXMLContainer() { <br /> } <br /> public function get children():Array{<br /> return _children;<br /> } <br /> public function set children(pArr:Array):void { <br /> if (…

MQuery2.0.2發怖

這次更新了自己的類別檔MQuery, 版本為2.0.2
和之前的1.0用法都一樣, 新增了許多的功能, 為了都是要減化 AS3 的程式碼。
<br />//標準 Flash AS3 寫法, 還不包含移除事件.<br />clip_mc.addEventListener(MouseEvent.ROLL_OVER , clip_mc_rollOverHandler);<br />function clip_mc_rollOverHandler(e:MouseEvent):void {<br /> clip_mc.gotoAndPlay("over");<br />}<br />clip_mc.addEventListener(MouseEvent.ROLL_OUT , clip_mc_rollOutHandler);<br />function clip_mc_rollOutHandler(e:MouseEvent):void {<br /> clip_mc.gotoAndPlay("out");<br />}<br />clip_mc.addEventListener(MouseEvent.MOUSE_UP , clip_mc_mouseUpHandler);<br />function clip_mc_mouseUpHandler(e:MouseEvent):void {<br /> trace("clip_mc onRelease")<br />}<br />//MQuery, 仿 AS2 的寫法。<br />$(clip_mc).onRollOver = function():void {<br /> this.gotoAndPlay("over");<br />};<br />$(clip_mc).onRollOut = function():void {<br /> this.gotoAndPlay("out");<br />…

Embedding JavaScript into a SWF

Flash 可以使用 ExternalInterface 類別來呼叫外部的.js函式
但前提是該html需要事件把js寫好
AS3之後, 可以把js的function整個包成.as裡, 一樣透過ExternalInterface 呼叫即可

在這個範例, 我使用了bit101的Button組件, 你可以換成自已的按鈕。
透過 XML 的 CDATA, 把整個js包進.as檔裡。
<br />package {<br /> import com.bit101.components.PushButton;<br /> import flash.display.Sprite;<br /> import flash.display.StageAlign;<br /> import flash.display.StageScaleMode;<br /> import flash.external.ExternalInterface;<br /> /**<br /> * ...<br /> * @author milkmidi<br /> */<br /> public class EmbedJSExample extends Sprite { <br /> public function EmbedJSExample() {<br /> stage.align = StageAlign.TOP_LEFT;<br /> stage.scaleMode = StageScaleMode.NO_SCALE;<br /> <br /> <br /> new PushButton(this , 0, 0, "Alert", function ():void { <br /> ExternalInterface.call( JSScripts.alert , "FlashCallJS" ); <br /> });<br /> <br /> new …

Progression3 tutorial part2

上一篇簡單分享過Progression全組件式的寫法
雖然方便, 但擴充性並不強, 要寫一個專案, 還是需要乖乖來寫程式
玩Progression要先搞懂三個要點:
1. 場景 ScendObject
他是Progression的整個核心架構
你可以想成html, 一個scene就是一頁html
該scene要有什麼元素, 都由這個SceneObject來管理
SceneObject有四個重要的事件:
_onLoad:當該場景被載入時。
_onInit:當該場景被初始化。
_onGoto:當該場景切換到別的場景時。
_onUnload:當該場景被移除時。
SceneObject的生命週期就是走這四個事件。
只有最上一層的主場景_onLoad只會發生一次
_onUnload永遠不會發生, 這個後面會再補充。

2. 可視物件 CastSprite, CastMovieClip
跟一般的Sprite, MovieClip使用起來差不多
但有二個重要的事件。
_onCastAdded:當透過new AddChild 或是 new AddChildAt 加入該物件時, 會發生的事件
_onCastRemoved:當透過new RemoveChild 移除該物件時, 會發生的事件。

3. Command
Progression提供了許多的 Command可以使用
Command Design pattern的好處就是可以依序的執行Command
跑完A, 再跑B , 再跑C,
所以可以很方便的製作單元切換的進退場效果。
像第二點的new AddChild就是 Command的其中一種

一個專案一般只會有一個Progression實體物件。
var prog:Progression= new Progression( 'index', stage, IndexScene );
'index':為該專案的Progression唯一的 Key 值, 只要key值不同, 彼此寫的Progression就不會打架
stage:把stage實體傳入
IndexScene:則是最上一層的 SceneObject, 其他的場景就由這裡開始加入

在這兒範例裡, 做了一個很簡單的架構, 好讓快速上手
首頁場景:
場景上有二個Button,
About:
A…

Hack手法強制執行垃圾回收

一起來說 Flash 垃圾回收機制是自動發生, 無法透過手動呼叫控制, 而我們若要強制啟用垃圾回收機, 則需要用一些非正規手段。
在這兒我們產生一萬個 Sprite ,並繪製色塊, 一秒鐘後, 將一萬個Sprite移除。
此時可以看到記憶體還是這麼的高。

透過使用
try { new LocalConnection().connect("milkmidi"); new LocalConnection().connect("milkmidi"); }catch (err:Error){}
記憶體就整個降了下來。
其原理就是故意使 swf 在運行時出錯, 然後throw出錯誤,
而同時通過catch error來繼續運行swf文件
而垃圾回收機則會在swf拋出錯誤的時候, 被強制執行一次
以清除 flash 內無效的數值, 減少資源的消耗。
但不是所有的throw錯誤都會發生垃圾回收。
至少這個方法是可行的。
要檢測你的swf用了多少的記憶體量, 可以使用Mr.doob所所的Stats類別來做監控。
http://code.google.com/p/mrdoob/wiki/stats

package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.net.LocalConnection; import flash.utils.setTimeout; import net.hires.debug.Stats; public class HackDemo extends Sprite { private const AMOUNT :int = 10000; private var _arr :Array; public function HackDemo(){ createTenThousandObj(); addChild(new Stats()); setTimeout( removeTenThousandObj , 1000); //雖然物件已經被移除, 但memory還是佔了約 33。 setTimeout( doHack , 1100); …

PV3D Pivot

away3d能直接修改物件的中心點
但PV3D並沒有該屬性, 但能透過以下三種方法達到一樣的效果。
1.用DisplayObject3D多包一層。
將物件加入到該DisplayObject3D, 然後對他做旋轉。
http://wonderfl.net/code/7fbfda83de4c282f304b3f11ef59575a1a10d484
2.直接去修改物件的Vertex3D座標。
http://wonderfl.net/code/b7e4f5b3650731820256cf7fbb3461662e2ec0d8
3.使用as3dmod提供的Pivot來更改。
要先下載as3dmod類別喔。

package { import com.as3dmod.modifiers.Pivot; import com.as3dmod.util.ModConstant; import com.as3dmod.ModifierStack; import com.as3dmod.plugins.pv3d.LibraryPv3d; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.cameras.CameraType; import org.papervision3d.view.BasicView; import flash.events.Event; public class PivotExampleas3dmod extends BasicView { private var do3d:Cube; public function PivotExampleas3dmod() { super(800, 600, true, false, CameraType.TARGET); init3DObject(); startRendering(); } private function init3DObject():void { var _ml:…

[新案上線]TOYOTA NEW YARIS-注目!我的代表色!

[新案上線]TOYOTA NEW YARIS-注目!我的代表色!
http://yaris.toyota.com.tw/




這次依然使用超好用的 Progression Flash Framework來製作
也嘗試了把所有flash的設計元件製作成swc, 透過FlashDevelop來發怖整個專案
這樣的製作方法超好用的啦,
發怖速度快, 終於可以不用開超慢的CS4, 又可以有Flash10的功能, 推。
身為一位專業的AS程式設計師, 一定要加個密技的啦
只要在輸入名字的欄位上,輸入大寫的RAINBOW
就會有隱藏版的畫面喔
而開場的吸入效果, 則是參考clockmaker製作的GinnyEffect
http://wonderfl.net/code/b8ec2e7155357ddc65d21eb8b1fa2e94c8363cfc



Dictionary And Proxy

今天來介紹二個 AS3 新增的二個類別(AS2沒有這東西喔)
Dictionary
簡單來說跟 Object 和 Array 是做一樣的事。
是用來索引物件用的類別。
Array是用數字來當做 Key 值。
_array[0] = "字串1";
_array[1] = "字串2";

_array[0] = "字串3";
時, 本來的值就會被取代掉
trace(_array[0]) //得到 字串3

Object是使用String來當作 Key 值
_obj['key'] = "String1";
_obj['key2'] = "String2";
(或寫成_obj.key2 = "String2";)

_obj['key2'] = "String3";
本來的值也會被取
trace(_obj['key2']) //得到 String3

Dictionary
是把'物件', 當作索引值,
每個物件都是獨立單一的, 這樣就可以確保索引值是唯一的。
var _dic :Dictionary = new Dictionary();
var _mc:MovieClip = new MovieClip();
var _mc2:MovieClip = new MovieClip();
//建立二個MovieClip
_dic[_mc] = "Dictionary Value1";
_dic[_mc2] = "Dictionary Value2";
用for in 掃一下內容。
for (var d:* in _dic) {
trace(d, _dic[d])
}
// [object MovieClip] Dictionary Value1
// [object MovieClip] Dictionary Value2
就可以得到當初寫入的值了
, 記得, 不要時一定要delete掉, 否則物件的指派還在
就不會被記憶體回被器回收喔。
完整程式碼:

package { import…

Progression專案上線, 聖克萊爾

新案上線
聖克萊爾
http://mp3.stclare.com.tw/



這次專案上完整的使用Progression FlashFramework,
嚴格來說, 還真是好用, 決解了swfAddress網址切換的問題
單元進退場的問題, 推薦給大家研究
以後做Event Site, 用他就對了
之後再來分享一下使用心得


Away3D CubeOpen

分享一下小弟在製作miniConcert網站的技術和原始檔:
http://miniconcert.milkmidi.com/
這次練習了使用Away3D, 寫起來和PV3D差不多, 概念上都一樣
而Cube打開是使用六個Plane拼成的, 傳值構通是使用Singleton Model來呼叫
並加入了新的相量3D物件, (PV3D也有)。
原始檔:

需要下載away3d,Tweener,TweenMax三個類別才能發怖程式碼喔!
SourceCodeDownload