Flash AS3 - как установить фрагмент ролика из импортированного текстового поля как недоступный для выбора

Я создал графику во Flash CS4, содержащую текст. Я встроил соответствующие символы, а затем сохранил их как MovieClip в своей библиотеке. Затем я экспортировал его в файл SWC.

В моем коде AS3 (с использованием Flex SDK / блокнота) я затем импортирую фрагмент ролика и назначаю ему некоторые события мыши, чтобы я мог использовать его как кнопку.

К сожалению, весь текст в графике, который я импортирую таким образом, имеет курсор мыши "I", и текст можно выбирать. Это отнимает фокус у моего флеш-приложения и нехорошо!

Я знаю, что когда у меня есть текстовое поле, я могу:

var myButton:TextField = new TextField();
myButton.MouseEnabled = false;

Но это не действует, когда я импортирую видеоклип:

var myButton:MovieClip = new MyImportedButtonGraphic();
myButton.MouseEnabled = false;  // No effect

// Plus some other things I learned:
myButton.selectable = false;    // also no effect
myButton.MouseChildren = false; // No effect

Что я делаю неправильно?


person Andy Moore    schedule 25.04.2009    source источник


Ответы (2)


Во flash ide выберите textField, перейдите на панель свойств и снимите флажок с кнопки, в которой есть символы «Ab». Это лишает вас возможности выбора текста.

person James Hay    schedule 25.04.2009
comment
Идеально! Это помогло. Правильно, что я не учусь использовать Flash IDE. :( - person Andy Moore; 26.04.2009

Если вы устанавливаете для фрагмента ролика, который содержит текст, отключение мыши, вам необходимо установить для него оба свойства: mouseEnabled и mouseChildren. mouseEnabled означает, что этот конкретный фрагмент ролика не может получать события мыши, но не влияет на дочерние элементы фрагмента ролика (например, на текстовое поле внутри него). mouseChildren означает, что дочерние элементы не регистрируют события мыши, они просто отправляются от родителя. Чтобы полностью отключить его, ОБА должны быть ложными.


var myButton:MovieClip = new MyImportedButtonGraphic();
myButton.mouseEnabled = false;
myButton.mouseChildren = false;

Поскольку текстовое поле является дочерним элементом фрагмента ролика, свойство mouseChildren будет влиять на него, и вы можете просто установить для него значение false, и оно все равно будет работать.

person Bryan Grezeszak    schedule 25.04.2009
comment
Я добавил MouseEnabled = false; MouseChildren = false; к моей кнопке, и курсор редактирования I по-прежнему отображается, и я все еще могу выделять текст. :( - person Andy Moore; 26.04.2009
comment
И это потому, что это mouseEnabled и mouseChildren (с учетом регистра). Это полностью отключит клип и всех дочерних элементов. Все, что вы сделали, это создали 2 новых свойства для фрагмента ролика, которые не имеют реального эффекта. - person Bryan Grezeszak; 26.04.2009