0

ActionScript 3 で円形にマスクを作成しようとしています (Flex AIR フレームワークを使用しています)。これはエコロジカル フットプリントと関係があり、各円は 1 つの地球を表しています。このエコロジカル フットプリントの写真はコンテナ内にあります。問題は、絵が浮いているのにマスクが固定されているように見えることです。コンテナを下にスクロールすると、画像は問題なくスクロールしますが、マスクはスクロールせず、画像の上部が切り取られます。これと他の UIMovieClip を VBox コンテナに入れました。その VBox コンテナは、さらに別の VBox コンテナ内にあります。前者のVBoxコンテナを後者の下に置くと、マスクが合わなくなるので円がマスクされません。

mask = new UIMovieClip();
mask.graphics.beginFill(0xFFFFFF);
mask.graphics.drawRect(radius,radius+radius*2*(1-(ecoWeight-Math.floor(ecoWeight))),1000,1000);
mask.graphics.endFill();    
earth = new UIMovieClip();    
earth.graphics.beginFill(0xFFFFFF);
earth.graphics.drawCircle(radius,radius,radius);
earth.mask=mask;
earth.graphics.endFill();
4

3 に答える 3

1

マスクを VBox コンテナーに追加します。

myVBox.addChild(mask);

または、マスクとシェイプの両方をコンテナーに入れてから、コンテナーを移動します。

var bundle:Sprite = new Sprite();

mask = new UIMovieClip();
...

earth = new UIMovieClip();    
...

bundle.addChild(mask);
bundle.addChild(earth);

myVBox.addChild(bundle);

bundle.x = 100;
bundle.y = 100;

これでアースとマスクが固定されます。私は UIMovieClip に慣れていませんが、Sprite を UIMovieClip に置き換えることができると思います。これは最初のものよりも優れた解決策です。なぜなら、それらを一緒に束ねないと地球を削除すると、マスクを削除することを覚えている可能性が低いためです.

お役に立てれば。

于 2009-12-07T10:19:30.453 に答える
0

マスクは最悪で、期待されていることをしないことがよくあります。BlendMode.LAYER と組み合わせて使用​​される BlendMode.ALPHA で、私ははるかに幸運に恵まれました。

于 2009-12-07T01:10:59.600 に答える
0

Flex はわかりません。Flash CS3 を使用していますが、イベント リスナーを追加してマスクの位置を変更してみてください。また、正しい順序で作業を行っていることを確認してください。マスクを適用し、すべてを 2 番目の VBox に入れます。言い換えれば、Actionscript を使った (限られた) 経験から、年表の重要性がわかりました。

また、すべての変数が適切にターゲット設定されていることを確認してください。Flash CS3 では (これも意味不明なことを吐き出す可能性があります)、子要素が含まれる MovieClip をクリックし、子要素のマウスを明確にオフにしないと、親はイベントを登録しません。

幸運を!

于 2009-12-07T01:16:46.970 に答える