PDA

Просмотр полной версии : Передача переменной на сл. кадр(help)


Klever
09.04.2010, 19:40
Здравствуйте =) извиняюсь если уже была подобная тема.

у меня возникла проблема помогите решить.

имеется два кадра.

На кадре первом имеется Movie Clip(предположим просто квадрат :D)
В это квадрате расположена кнопка Button, у этой кнопки имеется код

_root.gotoAndStop(2);
_root.txt7.text = "БлаБлаБла";


на втором кадре тектовое поле с именем txt7

вот при нажатии на кнопку на 1-ом кадре, на 2-ой кадр переходит, а текст в поле txt7 не вставляется, кто знает как это исправить?
где я туплю)))

mooncar
09.04.2010, 20:27
В первом кадре нет поля txt7. Значит при определении функции-обработчика для кнопки это поле остается неопределенным.
Т.е. какому именно полю присваивать свойство text, равное вашему "БлаБла", функция так "не уззнает".

Klever
09.04.2010, 21:16
и как быть в таком случае

mooncar
09.04.2010, 21:22
Включаем логику. Есть пара вариантов.
1) Ваше текстовое поле должно присутствовать уже в том же кадре, где определяется ваша функция. Если оно там будет мешать, то используйте свойство TextField._visible, делая его невидимым в первом кадре, а во втором - видимым.
2) Определяйте функцию там, где текстовое поле уже есть (во втором кадре).

AzagThoth
09.04.2010, 21:47
Вариант три: свяжите с текстовым полем переменную Свойства->Параметры->Переменная и задавайте значение для этой переменной. Тогда всё может остаться во втором кадре а код будет на первом.

Klever
09.04.2010, 21:57
не подскажешь как именно функцией сделать, а то я смутно представляю как это делать

mooncar
09.04.2010, 22:01
Вариант три: свяжите с текстовым полем переменную Свойства->Параметры->Переменная и задавайте значение для этой переменной. Тогда всё может остаться во втором кадре а код будет на первом.
Не учите плохому. Использовать связанную с текстовым полем переменную очень сильно не стоит.
Автор должен разобраться в правильном методе.

AzagThoth
09.04.2010, 22:08
А где можно почитать почему стоит избегать использования связанных переменных? Просто по моему это определённое достоинство и почему бы его не использовать!?

mooncar
09.04.2010, 22:09
Автор, см. пример.

mooncar
09.04.2010, 22:12
А где можно почитать почему стоит избегать использования связанных переменных? Просто по моему это определённое достоинство и почему бы его не использовать!?
Насчет почитать - не знаю. Возможно, где-то в обсуждениях, на форумах и т.д. Но я сам столкнулся на заре работы с флешем. В процессе разработки обнаружилось, что это очень сильно вредит, полдня как-то отлавливал баг из-за этого. Сейчас детализировать вам точно не смогу, т.к. было это у меня давно, но помню, что приводило к глюкам в работе кода, связанным с незапланированными событиями, когда поле var текстового поля использовалось, менялись его значения.
Кажется, это приводило к тому, что значение определенной переменной в коде кадра бралось не из логики работы этого кода, а из того значения, которое стояло в текстовом поле.
В общем, это такое же правило, как и не писать код на мувиках и кнопках, не использовать сцен и т.д.

Klever
09.04.2010, 22:18
а ещё вопрос, а меняется ли ситуация, если у меня это кнопка находится на 30 кадре Movie Clipа

mooncar
09.04.2010, 22:31
Сделайте ее не на 30-м кадре.
Если у вас к прискорбию все сделано не в одном кадре таймлайна, то лучше всего - делать все элементы навигации на слое, который растянут на весь таймлайн.
Научитесь манипулировать навигационными элементами (кнопками или содержащими их мувиками) с помощью свойства _visible.
То есть:
Все элементы присутствуют на таймлайне заранее.
Все обработчики назначаются заранее.
В нужные моменты включаете видимость нужных навигационных элементов, или ее (видимость) отключаете.

Если нет возможности что-то разместить на сцене заранее (например, что-то подгружается извне или из библиотеки), то в этот самый момент и нужно назначать обработчики, следя за тем, чтобы все объекты, участвующие в определении функции, существовали.

Что касается заголовка вашей темы. Если вы определяете в первом кадре какую-то примитивную переменную, то и на последующих кадрах она останется так же определенной.
Это относится именно к примитивному типу (числа, булевы величины). но если ваша переменная - это объектная ссылка на кнопку или мувик, то они уже должны быть в данном кадре, где происходит сама ссылка.

Klever
09.04.2010, 23:04
всё спасибо большое за помощь, сделал