HOMERSS 2.0RSS comments
sizeSMALLMEDIUMLARGEXTRA LARGE
home
time
24 / Fri
06 13 08 15 08
title [三腳貓的]AS3筆記-之AS3一玄:Error 1119
title
言
類
論
別

加上[三腳貓的]幾個字,就是要與大師級馬克林的筆記分開,司入門常會遇到的問題。在與AS3 Fight!的過程中,曾經為了

1119: Access of possibly undefined property some through a reference with static type flash.display:…

傷透腦筋。明明看起來都對為什麼就是一直被丟錯呢?

答案卻是出人意表的簡單(至少很出我意表啦) 。。。

這樣的錯誤通常是出現在想要以parent 或是用assign完整路徑去溝通deep nested的MovieClip的時候。比方說你寫了:

this.parent.parent.whatevernested.alpha=0.5;

這就等著被丟1119的錯了。但是為什麼呢??因為AS3相較於AS2更為嚴格一點,它可以判斷你的 this.parent.parent是DisplayObjectContainer 但就僅到DisplayObjectContainer為止,至於他是Sprite or MovieClip compiler並不知道,很不幸的DisplayObjectContainer這個class不是dynamic的class,但是我們的好朋友subclass MovieClip確是dynamic的class,所以我們得配合嚴格的老師,告訴他this.parent.parent不僅僅是DisplayObjectContainer,而且還是MovieClip。方法很簡單,寫法改成:

(this.parent.parent as MovieClip).whatevernested.alpha=0.5; //錯誤就會消失了。

以我自己用路徑指定的例子 就會變成

for (var j:Number = 0; j < t ; j++) {

var target:DisplayObject = outputHolder.getChildByName(“output” + (j+1));
var index:int = outputHolder.getChildIndex(target);
var xt:int=(outputHolder.getChildAt(index) as Sprite).getChildAt(0).x;

}

試誤經驗,以上。

參考閱讀:

Why doesn’t the “parent” property work the same in ActionScript 3?
Introduction to the Display List


  • 恩... 1 Stars喔~ 2 Stars好! 3 Stars酷!! 4 Stars哇!!! 5 Stars (2 票, 平均: 3.50 / 5) << 請踴躍投票


    4 Messages to “[三腳貓的]AS3筆記-之AS3一玄:Error 1119”


    1. Marc
      說:

      別這麼說,大家都是 AS3 新手

      不過如果你的東西有很多 parent,就代表你的東西很不oop,
      一般來講,由上往下就一路點(dot”.”)下去就好了,不過有下往上,也就是ㄧ要在children執行parent的動作,盡量用 dispatchEvent會比較好,不過你這招也真是特別,說不定某些狀況可以派上用場 (capture phase)
      MovieClip(this.parent.parent).whatevernested.alpha=.5 ;
      我比較喜歡用正規的casting

      不過displayContainer不也繼承了alpha, x, y…等等的屬性嗎? 只是不能亂加custom variables,其他的應該也可以設定吧.


    2. pei
      說:

      嗯 我剛寫不久 幾乎沒有用到過parent,我當時遇到1119錯誤的時候是我用到上面寫的那行getchildat [意思倒過來但是差不多的意思] 股溝下來 查得了zeuslabs的那篇解說 才知道原來還不少人遇到這樣的問題

      正規的 MovieClip(this.parent.parent).whatevernested.alpha=.5 ;
      意思是一樣的 通常都是卡在不知道要cast 才會有1119的錯誤訊息 當時我看用as MovieClip來cast覺得很有趣 原來flash也可以這樣寫 好像Coldfusion的語法 還滿有親切感的

      對了 能不能請你寫一篇dispatchEvent 的運用呢?


    3. Marc
      說:

      迅速寫了一篇"無知萬萬用"希望你看得懂


    4. 不惑仔
      說:

      試試傳統用法 :p
      this.parent.parent["whatevernested"].alpha=0.5;

    Leave a Message

    :) D: :( :D more »