2010-11-28 16 views
0

編集参照:AS3:クイック質問子供について、それらに

function picSwitch(p=null) 
{ 
if (picShown == true) 
{ 
    picx = 3072; 
    picy = 2304; 
    picTweens.removeChild(pic); 
    picShown = false; 
} 
else 
{ 
    var pic:image = new image(); 
    pic.smoothing = true; 

    pic.width = 750; 
    pic.height = 560; 

    if (pic.scaleX < pic.scaleY) 
    { 
    pic.scaleY = pic.scaleX; 
    } 
    else 
    { 
    pic.scaleX = pic.scaleY; 
    } 

    picx = 1536 - (pic.width/2) + 64; 
    picy = 1152 - (pic.height/2) - 12; 

    picTweens.addChild(pic); 

    TweenLite.to(pic, 1, {x:picx, y:picy, rotation:4, ease:Quint.easeInOut}); 

    picShown = true; 
} 
} 

オリジナルポスト:: 男ああ、私はいくつかの時間を費やしてきたと信じてすることはできませんをキャメロンは、完全な問題のある機能を要求しました私はあなたにすべて前もってお詫びします。

私が作成した子供を参照する際に問題があります。私は「画像」私の舞台で「picTweens」と呼ばれる

コンテナムービークリップと呼ばれる私のライブラリ内のムービークリップを持っている

(そのインスタンス名が同じである)

とアクション]パネルで私はすべてが順調と良い

var pic:image = new image(); 
pic.smoothing = true; 
picTweens.addChild(pic); 

が含まれている機能を持っている段階で、それは私にそれがはずのムービークリップを作成します。

は今、同じ関数内のif文では、私は

picTweens.removeChild(pic); 

が、そのif文のトリガ、(することになっています。ここで、iは私のPICはロードされたんだが)

それを持っています教えてください:

TypeError: Error #2007: Parameter child must be non-null. 
at flash.display::DisplayObjectContainer/removeChild() 

私の構文は間違っていますか?もしそうでなければ、どうすればいいのですか?

+0

問題の機能を全体として投稿できますか? – Cameron

+0

全面的な攻撃機能で編集されました。 – Partack

答えて

2

明らかです。子供を削除したいときは、変数picは利用できません。あなたは "else"の部分でそれを宣言しましたが、それはある機能(私はボタン・プレスで呼び出されるか、フレームや他のイベントを入力すると思われます)にありました。したがって、関数が今度はのpicShownをtrueに設定して関数を呼び出すと、ピクチャ変数は使用できず、nullです。

実際には関数の変数OUTSIDEを宣言していましたが、関数スコープ内に "var"があると、ローカルで上書きされました。だから、

- あなたは後からハンドルをアクセスすることができますので、関数の外PIC変数を宣言することを確認してください:

var pic:image; 
function picSwitch(...){ 
    // etc. 
} 

も ​​- あなたは写真を再宣言しないで、ということがある場合変数関数の中に単純な代入(pic = blah;)を使用します。

+0

私にそれを打つ:-) – Cameron

+0

Augh! > ___ <私はそれがそんなに馬鹿だと分かっていました。恐ろしいことに、このスペースの無駄にごめんなさい。 実際、それは私のvar picのスコープです:image = new image(); * facepalm * – Partack