私はペイントゲームに取り組んでいます。ブラシをクリックすると、ブラシのグラフィカルな部分にマウスが切り替わり、画面にペイントすることができます。ブラシが選択されていない場合、マウスは同じままです。クリック時のAS3カスタムカーソル
矩形とブラシは別々のムービークリップにあります。その上にpng線を重ねると、塗りつぶして描画することができます。シーン1のアクション層で
、このマウスを変更するための私のコードである:
var cursor_mc:MovieClip;
if (CanvPark_mc.HugeSelected1 == true){
cursor_mc = cursor1_mc;
}else if(CanvPark_mc.MediumSelected1 == true) {
cursor_mc = cursor2_mc;
}else if(CanvPark_mc.SmallSelected1 == true) {
cursor_mc = cursor3_mc;
}
stage.addEventListener(MouseEvent.MOUSE_MOVE,moveCursor);
function moveCursor(myEvent:MouseEvent) {
if(CanvPark_mc.SmallSelected1 == false, CanvPark_mc.MediumSelected1 == false, CanvPark_mc.HugeSelected1 == false)
{ Mouse.cursor="auto";
}else{
setChildIndex(cursor_mc, this.numChildren-1);
cursor_mc.x = (mouseX);
cursor_mc.y = (mouseY);
Mouse.hide();
}
}
各ブラシは、それに関連付けられたブール変数有する:小、中、HugeSelected1を、そのようので、I 1つが選択されていて、1つが選択されていないコードでいつでも伝えることができます。
このコードを実行すると、最初は何も起こりませんが、いずれかのブラシをクリックすると、出力にポップアップが表示されます。
TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/setChildIndex()
at visibilityToggle/moveCursor()[visibilityToggle::frame1:42]
私は正直、このエラーを引き起こしているのか分からない
setChildIndex(cursor_mc, this.numChildren-1);
で特異的に指しているようです。私はマウスカーソルを変えることがこれほど簡単だと思いました。
どうすればこの問題を解決できますか?
まあ、エラーテキストは、あなたの子供のムービークリップは、(私は意味cursor_mc)nullであることをかなり明確言います。デフォルト値が割り当てられておらず、条件に "else"部分がないため、これらの条件が真でない場合、coursor_mcは未割り当てのままになります。 if-else条件ブロックを編集するか、デフォルト値を割り当てることをお勧めします。 – Nbooo
また、条件にカンマを付けると、最後の式だけがチェックされます。 – Nbooo
ご返信ありがとうございます。 代わりにifを区切り、 'new MovieClip()'を 'cursor_mc'に割り当てました。 しかし、今は別のエラーが出ています。 'エラー#2025:提供されたDisplayObjectは、呼び出し元の子でなければなりません。 visibilityToggle/moveCursor(では、flash.display ::のDisplayObjectContainer/setChildIndex() \t)で \t [visibilityToggle ::フレーム1:53] ' – TwistedRaven