2014-01-18 3 views
0

жаль о плохом названии. Поэтому я стараюсь иметь коробку с номером на ней, который будет либо 1, либо 3. Я бы хотел, чтобы программа обнаружила, что в окне или текст был нажат. Я бы предпочел не использовать заявление if, в котором говорится: is (this has been tapped) && (this has been tapped). я уже попытался установить текст как динамическое текстовое поле, и говорятСложенные экземпляры «доступны»

if(this is true){ 
have this happen} 

и затем текстовое поле часть символа, но я получаю ошибку:

1120: Access of undefined property [DYNAMIC TEXT BOX NAME]. 

Я также попытался создать 2 экземпляра для двух возможных выходов в текстовом поле, оставив их за пределами экрана, а затем просто телепортировав нужный номер на экран, но тогда я могу только нажать около текст, а не на него?

Что было бы лучшим способом сделать это?

ответ

1

Вы говорите экземпляры телепорта? Вы должны использовать метод и removeChild(), таким образом вы объявляете контейнер Sprite, добавляете к нему две переменные типа типа TextField (или используйте их, просто измените текст, если это вам подходит) и назначьте прослушиватель событий к экземпляру контейнера.

public class TextBox extends Sprite { 
    private var tf:TextField; 
    private var _value:int; // 1 or 3 
    public function get value():int {return _value; } 
    public function set value(v:int):void { 
     tf.text=v; 
     _value=v; 
    } // this ensures that when you assign the value to a TextBox, the text field 
    // will have the same text as the value 
    public function TextBox() { 
     // either assign a text field via Flash CS GUI or instantiate it here 
    } 
} 

Затем вы делаете экземпляр TextBox, поместите его где-то и добавить прослушиватель событий в TouchEvent.TOUCH_TAP или MouseEvent.CLICK типа, независимо от вашего интерфейса используется.

Другой способ сделать то же самое - использовать существующие текстовые поля, но присвоить их свойству mouseEnabled значение false, это должно заставить Flash CS передавать события мыши в базовое поле. Это заставляет вас делать меньше усилий, но, как правило, плохо для вашего будущего роста в качестве программиста.

+0

К сожалению, я запрограммировал это в окне действия, поэтому я не думаю, что могу добавлять классы, и еще не имею опыта спрайтов, поэтому ... На втором пути: если я делаю это для мобильный, что бы я использовал? И какой именно код? Также что вы подразумеваете под «Это заставляет вас делать меньше усилий, но, как правило, плохо для вашего будущего роста в качестве программиста». – user2789610

+1

Во-первых, вы всегда можете добавлять классы, потому что все, что вы делаете как отдельный символ и устанавливаете «Export for Actionscript», на самом деле является классом. Во-вторых, вы используете 'if (the box is tapped)' clause, потому что текстовые поля больше не смогут быть задействованы, так что если вы нажмете текстовое поле, которое находится над полем, кран будет зарегистрирован в поле, поэтому ваше действие срабатывает. И, в-третьих, помещение всего в таймлайн имеет свои ограничения, которые вы можете превзойти, используя как временную шкалу, так и классы, и как только вы привыкнете к классам и поведению ООП, вы сможете освоить другие языки программирования – Vesper

Смежные вопросы