![]() |
|
||||||||||
|
|||||
|
Всем привет!
у меня есть метод : почему gotoAndPlay("finish"); не может сработать? |
|
|||||
|
.
|
Потому что это статический метод класса, а у класса MovieClip, как объекта, нет метода gotoAndPlay(). Этот метод есть у объектов, инстанцированных от класса MovieClip.
|
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Можно, например, передать в функцию allRight ссылку на мувиклип, у которого надо вызвать gotoAndPlay, тогда все будет хорошо.
__________________
#flasher@irc.trg.ru:6667 |
|
|||||
|
а если нужно перескочить на на главном таймлайне?
|
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Главный таймлайн тоже мувиклип.
__________________
#flasher@irc.trg.ru:6667 |
|
|||||
|
подскажи, полиз, как к нему обратиться в моем случае..
|
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
__________________
#flasher@irc.trg.ru:6667 |
|
|||||
|
спасибо
Добавлено через 2 часа 53 минуты во всем приложении что бы обратиться к методу или свойству использовал такой вид и из другого класса обращался к нему но в моем случае мне посоветовали избегать static пришлось все менять и теперь не так просто обрфщаться к свойствам главного класса из дополнительных Добавлено через 2 часа 57 минут вот, например, есть класс Friend, в нем описывается функционал людей, на сцене будет 3 экземпляров этого класса. в классе Friend есть метод: Добавлено через 3 часа 5 минут наводим курсор на экземпляр класса Friend и этот экземпляр должен отработать такой вот функционал: private function over(e:MouseEvent):void { if((this.root as Main)['take'] == true)//здесь take свойство главного класса, которое верно. { myTween = new Tween(this, "y", Strong.easeOut, _y, _y-45, 5, false); myTween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinishd, false, 0, true); this.gotoAndStop(2);//наш "друг" прыгает и меняет кадр на второй if((this.root as Main)["cursor"].hitTestObject(this))//условие верно { // условие для 1-го кусочка if((this.root as Main)['currentDragged'] == "f1_mc")//верно { piple = this.name; trace(piple)// выводит p1_mc (this.root as Main)["f1"].alpha = 0;// на эторугается! Почему? if(piple == "p1_mc") { trace((Main)['currentDragged']) (this.root as Main)["s1"].alpha = 1; (this.root as Main)["s1"].gotoAndPlay(2); (this.root as Main)["p1"].stopFriend(); (this.root as Main)["num"] ++; (this.root as Main).allRight(); } это конечно не выполняется, все что ниже то же не выполняется. а ругается так: Последний раз редактировалось Dr_Bra; 20.10.2010 в 17:14. |
|
|||||
|
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Цитата:
Ну и преведение типов нужно для того, чтобы компилятор не ругался на обращение к несуществующему свойству, считая объект не тем, кем он есть ![]() (this.root as Main)['currentDragged'] – надо было писать так: (this.root as Main).currentDragged А на обращение ['someField'] компилятор так и так не ругнется, так что можно (НЕЛЬЗЯ!) писать this.root['someField']
__________________
#flasher@irc.trg.ru:6667 Последний раз редактировалось Obi; 20.10.2010 в 21:33. |
|
|||||
|
почитал у Мука про статические методы и свойства, да действительно в моем случае их применять не стоит.
Поправил код, учитывая комментарий, но по прежнему та же самая ругань package com { import com.Food; import com.Main; import fl.transitions.Tween; import fl.transitions.TweenEvent; import fl.transitions.easing.*; import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class Friend extends MovieClip { private var _y:int; private var myTween:Tween; public var piple:String; public function Friend() { this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init (e:Event):void { _y = this.y; this.addEventListener(MouseEvent.ROLL_OVER, over, false, 0, true); } private function over(e:MouseEvent):void { if((this.root as Main).take == true) { myTween = new Tween(this, "y", Strong.easeOut, _y, _y-70, 5, false); myTween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinishd, false, 0, true); this.gotoAndStop(2); if((this.root as Main).cursor.hitTestObject(this)) { // условие для 1-го кусочка if((this.root as Main).currentDragged == "f1_mc") { piple = this.name; (this.root as Main).f1.alpha = 0; if(piple == "p1_mc") { trace((this.root as Main).currentDragged)//почему - то выводит сразу 2 одинаковых имени ("f1_mc" - этот объект был наведен на экземпляр Friend) (this.root as Main).s1.alpha = 1;// ругается на эту строку // (this.root as Main).s1.gotoAndPlay(2); // (this.root as Main).p1.stopFriend(); // // (this.root as Main).num ++; // trace((this.root as Main).num) // //(this.root as Main).allRight(); } } } } } private function tweenFinishd(e:TweenEvent):void { myTween = new Tween(this, "y", Strong.easeIn, this.y, _y, 5, false); myTween.addEventListener(TweenEvent.MOTION_FINISH, shutUp, false, 0, true); } private function shutUp(e:TweenEvent):void { this.gotoAndStop(1); } public function stopFriend():void { this.removeEventListener(MouseEvent.ROLL_OVER, over); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:42. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| function , public , static |
|
|