ActionScript 3.0打造互動網頁力與美第二刷書現身

其實這篇早就該要分享的,但是每天回到家就癱了,實在沒什麼時間拍照(已經半年沒按到快門啦),早上去投完票,趁下午要上飛機前趕快把這篇敲出來。

應該大家沒發現我寫的 [ActionScript 3.0打造互動網頁力與美]這本書換包裝了吧?老實說,要是沒注意看我可能也很難發現,來跟大家分享一下新包裝什麼樣子。

ActionScript 3.0打造互動網頁力


要從封面上看出差異是很難的,因為封面沒變,請翻轉90度看書背,有發現差異在哪嗎?沒錯,印刷的特別色換了,之前的顏色在昏暗的環境底下實在很難看到黑色字體的ActionScript字樣,換成這樣清楚多了,大家要在書店找到它就不會找到眼睛脫窗了。 XD

ActionScript 3.0打造互動網頁力與美


當然第一刷賣完不能只換換封面就了事了吧,沒錯,重要的當然是把幾個小錯字給更正過來,千萬不要以為直接刷就好,光是第一刷我跟編輯就做過5次校對,看的還真是頭昏眼花,但是萬萬沒想到書序的部落格網址居然打錯了沒人發現 ,一定是大家都把精力放在書的內容了。 Orz

之前是打 http://blog.riaporject.com 這次改成正確的 http://blog.riaproject.com 這個網址了,不過搞不好大家都不看書序的。XD


來囉,證據來了,有看到”二版一刷”這個字嗎?這要先感謝有買這本書的朋友支持,這樣我才能在第一刷賣完對書的內容有機會坐一些調整。

或許眼尖的人有發現日期是2008年1月,沒錯,其實早就刷出來了,不過真的是沒時間拍照啊,才到今天咬著牙一口氣把他拍完兼分享出來。 Orz

ActionScript 3.0打造互動網頁力與美


之前有買第一版書的人看清楚囉,這P159頁的公式上次打錯字了,這版已經修正過來了。

ActionScript 3.0打造互動網頁力與美


第五章和之後的一些章節程式碼有作稍微的修正,可以支援正確最新的Flash版本,當然之前的一些討論在留言板中都有,大家可以去裡面找答案。

ActionScript 3.0打造互動網頁力與美


大家看到這篇的時候我其實已經離開台灣了,下個禮拜告假一周,若有什麼問題先留言吧,等我回來再一一位大家做回答。

對[Flash CS3 ActionScript 3.0打造互動網頁力與美]一書有興趣的朋友可以點連結看看內容,或是到各大書局做翻閱。

本篇發表於 ActionScript 與標籤於 anistar固定網址書籤。
本文引用:
文章內容為ANISTAR BLOG所有,引用分享請以鏈結形式註明出處與原始作者。

關於 anistar

現任:台灣區 Yahoo! 專長: Objective C、iOS SDK、Android SDK、Flex 4、RIA、ActrionScript 3、HTML5、CSS3、JQuery、JQuery Mobile、C++、PHP、MySQL...等整合運用。 著作:《Run!PC雜誌》專欄作家、《CADesigner雜誌》專欄作家、《Flash CS3 Professional ActionScript 3.0 打造互動設計力與美》、《新一代互動體驗Flex+AIR程式開發》。 認證:Macromedia Certified Instructor in ColdFusion    Adobe Certified Expert in Photoshop    Adobe Certified Instructor in Flex

32 則迴響於《ActionScript 3.0打造互動網頁力與美第二刷書現身

  1. 5-4_緩緩上升的泡泡動畫,這行會出錯
    var mc:MovieClip =root.getChildByName(“bubble” + i);
    ——————-
    解決辦法:
    var mc:MovieClip = MovieClip(stage.getChildByName(“bubble” + i));
    ——————-
    參考書本4-3範例:資料型態轉換
    trace(uint(“15.5”)); //會輸出15
    所以我就在
    stage.getChildByName(“bubble” + i)
    的外面包了一個MovieClip(),然後就成功了

    • 是的, 因為後來Flash的編譯器變嚴格了,所以要加上轉型才可以使用,你可以用MovieClip()或是as MovieClip進行轉型皆可.

  2. 這本書寫得超棒~!! 我買的是2007年8月那版,
    但現在來看,內容一點也不會過時。
    老師,我有個建議,希望您能把第二版更正的地方都公布出來,
    您說留言板有討論,可以去爬文,但是留言板很雜,而且沒有頁數按鈕,
    很難找你們之前的討論。
    ——————————–
    看來大家都有相同疑問:
    為什麼用root不可以呢?
    因為addChild是stage的方法。
    用stage和this都可以。

    • 謝謝你的支持, 只要還是用ActionScript 3.0的語法, 那本書就還有存在的價值.
      我稍微補充一下你的說法, 應該是說addChild是Container的方法, 而非stage的專屬用法, root在ActionScript 3.0以後是會變動的, 也就是說用不同的版本CS3, CS4, CS5可能會造成不同的結果, 所以在後來使用ActionScript 3.0後我都建議改用this.
      這本書的初版在Flash CS3 beta (ActionScript 3.0那時候還沒正式release)就出版了, 所以難免有點差異,請多見諒.
      在第二版後都已經修正.

  3. 其實不是嚴不嚴謹的問題,強型別語言本來就是這樣,變數宣告的型別要大於存入的型別,否則就要轉型別,但也不是什麼型別都可以轉,要有階層關係才能轉,AS3的文件裡,最上面都是寫著各個型別的階層關係,原則上,下ㄧ層的型別可以用上一層的型別來接,但反過來則要轉型別,類似容器裝東西的概念,以你這個例子來說,MovieClip的文件上面寫的繼承關係如下
    MovieClip –> Sprite –> DisplayObjectContainer –> InteractiveObject –> DisplayObject –> EventDispatcher –> Object
    最左邊的表示最下層(容器最小),最右邊的表示最上層(容器最大),所以你可以很清楚的看到MovieClip是最底層的類別,而DisplayObject則在其上

    再看看你的程式碼
    var mc:MovieClip=root.getChildByName(“bubble”+i);
    你實體化了一個mc物件,他的型別是MovieClip(容器最小)
    但是你等號右邊卻是一個DisplayObject型別的物件(要記得,凡是用getChild()的方法,取回來的物件都是DisplayObject型別)

    換言之,你拿一個大容器塞進ㄧ個小容器裡,當然塞不進去!
    所以你要轉型別(用AS),把上層型別轉換成同一層的型別
    你可以想成把大容器捏小,捏成跟小容器一樣大,這樣就放得進去了

    接著再來看志峰兄的語法
    root.addChild(mc);
    我前面說過了,凡是跟child有關的,都是DisplayObject型別,因此在addChild()裡面也是放DisplayObject型別的物件,mc這個物件是MovieClip型別,它位在DisplayObject的下層,所以可以它可以用上層型別來接

    換言之,MovieClip容器比較小,你把它放到比較大DisplayObject容器哩,當然沒問題,也不需要轉型別,自然不會發生錯誤

    • 基本上原廠文件有說明,addChild必需要用在DisplayObjectContainer上,root在actionscript 3中是會依狀態而改變的,因此後來我都是建議用this,flash做了很多我們看不到的事情,而且每一版還不一樣,所以了解正確的基礎才不會出問題。

  4. 今天也是看到第六章,不過第五張的 5-4-2 和 5-5-2 怎麼用就是有錯誤,像老師說的把root 改成 this 還會再出現一個 1118: Implicit coercion of a value with static type flash.display:DisplayObject to a possibly unrelated type flash.display:MovieClip. 然後剛剛上網找了一下,修改了 var mc:MovieClip=root.getChildByName(“bubble”+i); 成為 var mc:MovieClip=root.getChildByName(“bubble”+i) as MovieClip; 就可以跑了…

    不過,為什麼老師的檔案 root.addChild(mc) 跑起來也不會出現錯誤呀?
    為什麼用root不可以呢?
    還有另外一個錯誤,是因為像http://blog.riaproject.com/actionscript/426.html老師說的,AS3.0太過嚴謹所以”必須”一定要再加上 as MovieClip才沒有問題嗎?

    謝謝。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *