|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Dec 2011
Адрес: в Перми
Сообщений: 33
|
функция onPress не видит другие переменные
В классе описал у MovieClip событие onPress,
Но функция не видит переменные этого класса, а переменные очень нужны. Может быть есть способ достать их? Последний раз редактировалось maloun365; 29.12.2011 в 19:45. |
|
|||||
Почему у вас перед описанием самой функций стоит var ? И у вас ошибка в слове function
Чтобы достать переменные из класа напрямую, переменные в класе должны быть описаны как public И ещё, чтобы обратиться из класса к созданому вручную символу, нужно писать:
__________________
Дети не должны знать о своих родителях Последний раз редактировалось Tails; 29.12.2011 в 20:20. |
|
|||||
Регистрация: Dec 2011
Адрес: в Перми
Сообщений: 33
|
метод объявляется с помощью той же переменной
переменную нужно использовать в этой функции Последний раз редактировалось maloun365; 29.12.2011 в 20:34. |
|
|||||
Да, невидит потомучто вы вешаете обработчик нажатия на клип, соответственно при нажатий он ищет переменную i относительно себя а не класа.
Чтобы получить i, вам нужно:
Вот так например (только если у вас всего 1 экземпляр класа): // в конструкторе класа: _root.thisClass = this; ... // в обработчике нажатия: trace(_root.thisClass.i);
__________________
Дети не должны знать о своих родителях Последний раз редактировалось Tails; 29.12.2011 в 20:43. |
|
|||||
Чтобы вызвать ваш метод в области видимости вашего объекта, используйте делегат ( кажется mx.utils.Delegate ).
Примерно так: И не используйте _root без крайней необходимости.
__________________
aka doctorstal |
|
|||||
Регистрация: Dec 2011
Адрес: в Перми
Сообщений: 33
|
я ещё только учусь, по этому очень многое ещё не понимаю...
в контсрукторе класса - это где? куда добавлять ссылку на объект созданного класса и как прописать в классе это всё... попробовал в классе объявить делегат... Строка 69: There is no method with the name 'Delegate'. myarray[i].onPress = Delegate.create(this,Push); можно примерчик какой-нибуть? Добавлено через 3 минуты Последний раз редактировалось maloun365; 29.12.2011 в 21:02. |
|
|||||
import mx.utils.Delegate; // - это импорт используемых классов class Test extends MovieClip{ public var mc:MovieClip; private var i:Number; public function Test(){ // это конструктор i=0; mc=attachMovie("myButton","mc",getNextHighestDepth()); mc.onPress=Delegate.create(this,Push); } private function Push(){ trace(i++); } }
__________________
aka doctorstal |
|
|||||
Регистрация: Dec 2011
Адрес: в Перми
Сообщений: 33
|
всё равно не работает!
import mx.utils.Delegate; // - это импорт используемых классов class test extends MovieClip{ public var mc:MovieClip; private var i:Number=1; public function mytest(){ // это конструктор mc=_root.attachMovie("myButton","mc",1); // исправил тут mc.onPress=_root.Delegate.create(this,Push); // и тут } private function Push(){ trace(i++); } } ещё процедура и имя класса не захотели быть одним словом у меня как-то странно ипортируется класс... постоянно с ошибками изподвыперда. The name of this class, 'mx.utils.Delegate', conflicts with the name of another class that was loaded, 'mx.utils.Delegate'. class mx.utils.Delegate extends Object Общее количество ошибок ActionScript: 1 Сообщенные ошибки: 1 импортировать надо не в классе и если импортировать, то импрортировать всю папку... вот это у меня в классе: class test extends Object{ public var mc:MovieClip; private var i:Number=1; public function mytest(){ // это конструктор mc=_root.attachMovie("myButton","mc",1); mc.onPress=_root.Delegate.create(this,Push); } public function Push(){ trace(i++); } } а это в главном окне на первом кадре: import mx.utils; // - это импорт используемых классов var test:test = new test(); test.mytest(); Последний раз редактировалось maloun365; 29.12.2011 в 22:34. |
|
|||||
Нет, ты запутался и сделал неправильные выводы.
Код в первом кадре измени вот так: А в test.as сделай следующее: import mx.utils.Delegate; // - это импорт используемых классов class test extends MovieClip{ public var mc:MovieClip; private var i:Number=1; private var _host:MovieClip; public function test(host:MovieClip){ // конструктор _должен_ иметь то же имя, что и класс. Это делает его конструктором. // это конструктор _host=host;// Сохраним ссылку на мувиклип-контейнер. Так мы сможем не привязываться к _root и добавлять наши кнопки в любой мувиклип. mc=host.attachMovie("myButton","mc",host.getNextHighestDepth()); // добавим кнопку в наш контейнер mc.onPress=Delegate.create(this,Push); } private function Push(){ trace("work?"); trace(i++); mc.gotoAndStop(i); } }
__________________
aka doctorstal |
|
|||||
Регистрация: Dec 2011
Адрес: в Перми
Сообщений: 33
|
всё равно не работает, пишет странную ошибку при компиляции
|
Часовой пояс GMT +4, время: 06:54. |
|
« Предыдущая тема | Следующая тема » |
|
|