Я работаю над картиной игры, которая, как только вы нажимаете на кисти, мышь переключается на графический аналог указанных кистей и позволит вам рисовать на экране. Если кисть не выбрана, мышь останется прежней.AS3 Custom Cursor On Click
Прямоугольник и кисти находятся на отдельном Movieclip, который позволяет мне накладывать на него линии 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, так что, как я может всегда указывать код, который выбран и который не выбран.
Прямо сейчас, при запуске этого кода, в начале ничего не происходит, но если я нажму на любую из кистей, это всплывает на выходе.
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 я имею в виду). У вас нет назначенного ему значения по умолчанию, и ваше условие не имеет части «else», поэтому, если ни одно из этих условий не является истинным, coursor_mc останется неназначенным. Я предлагаю либо отредактировать блок условий if-else, либо присвоить значение по умолчанию. – Nbooo
Кроме того, с запятой в вашем состоянии будет проверено только последнее выражение. – Nbooo
Благодарим вас за ответ. Включил их, чтобы отделить if's и назначил 'new MovieClip()' to 'cursor_mc'. Но прямо сейчас это дает мне еще одну ошибку. 'Ошибка # 2025: поставляемый DisplayObject должен быть дочерним элементом вызывающего. \t в flash.display :: DisplayObjectContainer/setChildIndex() \t в visibilityToggle/moveCursor() [visibilityToggle :: frame1: 53] ' – TwistedRaven