2

これはまったくの初心者の質問だと思いますが、私は夢中になっています...

Flash Professional には、高さ 1000px、幅 50px のムービー クリップがあります。マスクが高さ100px、幅50pxのマスクレイヤー内(下)に含まれています。私のプログラムでは、ムービー クリップを垂直方向に移動すると、予想どおり、垂直方向に 100 ピクセルしか表示されないようにマスクされます。

私の質問は: ムービー クリップからマスクを削除するにはどうすればよいですか? Flash Builder でムービー クリップをデバッグ検査すると、その .mask プロパティが null になります。マスクされてるけど

私は何が欠けていますか?

前もって感謝します、

グレッグ

4

5 に答える 5

1

グレッグは正しい。DisplayObject の mask プロパティを介して Flash IDE で設定されたマスクにアクセスできると思われるかもしれませんが、アクセスできません。フラッシュで設定されたマスクは、actionscript では常に null です。

マスクを削除するハックバージョンは、あなたが試みることができるということです

displayObjectWithMaskOnIt.parent.removeChild(displayObjectWithMaskOnIt) 

その後

displayObjectWithMaskOnIt.parent.addChild(displayObjectWithMaskOnIt). 
于 2012-07-19T07:38:21.053 に答える
0

http://forum.starling-framework.org/topic/weird-how-to-read-mask-info-from-an-swf-fileから

それは非常に簡単です: マスク プロパティは、タイムライン マスクとはまったく異なるマスクです。

mask プロパティを使用すると、任意のオブジェクトを他のオブジェクトのマスクとして使用できます (同じ表示ツリーに配置することを忘れないでください。そうしないと、意味がなくなります)。

タイムライン マスクは、特定のオブジェクトによってマスクされる深さの特定の範囲を指定します。

2 つのシステムはまったく通信しませんが、同じ仕事をします。

タイムライン マスクにアクセスする場合は、swf パーサーまたは jsfl を使用することをお勧めします。

そのため、タイムライン マスクは、マスク プロパティとは別のメカニズムを使用します。そのため、アクセスできません。他の人が述べたように、子を削除して追加することでタイムライン マスクを間接的に非アクティブ化できる場合がありますが、SWF ファイルを解析する以外に、最初にオブジェクトがタイムライン マスクでマスクされているかどうかを検出する方法はないと思います場所。

于 2014-05-19T18:15:48.167 に答える
0

大きなムービー クリップにインスタンス名を付けて (たとえば、big_mc)、次に

big_mc.mask = null; 
于 2012-04-10T14:34:51.603 に答える
0

actionscript を使用して、マスクが MovieClip の親用であるかどうかを確認します。

MovieClip(movicClipInstanceName_mc.parent).mask

そして、それが設定されている場合... .mask = null;

通常、タイムラインで宣言するマスクは、AS コード内で台無しにすることはありません。後でプログラムで変更する場合は、AS コード自体にマスク プロパティを設定することをお勧めします。

movicClipInstanceName_mc.mask = someOtherMovieClipInstanceThatIsMyMask_mc;

私にとって、この方法で行うと、よりクリーンに感じられ、よりコントロールできるようになります。

于 2012-04-10T05:05:57.027 に答える