Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   из класса к фреймам (http://www.flasher.ru/forum/showthread.php?t=136521)

lubko 18.02.2010 23:15

из класса к фреймам
 
из класса нужно вызвать gotoAndStop(...);

как докопаться до основних фреймов?
stage?вроде что-то не то...
parent поклацал тоже безрезультатно. или надо к главному классу обращаться?

не понимаю.

MrPoma 19.02.2010 00:25

К главному классу, который должен наследовать MovieClip.

gloomyBrain 19.02.2010 00:27

опередили =)

lubko 19.02.2010 01:19

главный клас
Код AS1/AS2:

 public class AAA extends MovieClip


Код AS3:

package  {
        import flash.display.SimpleButton;
        import flash.events.*;
        public class MyButton extends SimpleButton {
 
                private var frame:int;
                public function MyButton(n:int)
                {
                        frame=n;
                        addEventListener(MouseEvent.CLICK,butClick);
                }
                private function butClick(e:MouseEvent){
                        AAA.gotoAndStop(frame);
                }
        }
 
}


1061: Call to a possibly undefined method gotoAndStop through a reference with static type Class.

dixus 19.02.2010 01:29

Вы обращаетесь к gotoAndStop через класс, как если бы это был статичный метод, а надо через экземпляр класса, например с помощью parent. Через parent может не получаться, если вы прикрепили кнопку не к самому корневому мувиклипу,а к его дочернему элементу, соответственно можно сделать что-то наподобие вот этого:

Код AS3:

var root:DisplayObjectContainer = parent;
while ( !(root is AAA) ) {
    root = root.parent;
}
 
(root as MovieClip).gotoAndStop(frame);


gloomyBrain 19.02.2010 01:41

Цитата:

не к самому корневому мувиклипу,а к его дочернему элементу
root - это корень иерархии. Если экземпляр MyButton добавлен на сцену, то внутри класса MyButton просто пишем
Код AS3:

var myRoot:MovieClip = (this.root as MovieClip);
if(myRoot != null) {
  myRoot.gotoAndStop(frame);
}

PS
Подобный цикл (см пост выше) может все завесить

dixus 19.02.2010 01:44

да, не знал =)
ЗЫ завесить все он не сможет, максимум - выдаст ошибку.

lubko 19.02.2010 02:21

___спс

vasya87 02.03.2010 20:24

прочитал эту тему, но у меня не получается.
есть 4 кадра с чем-то. такой код:
Код AS3:

package src {
  import flash.text.*;
  import flash.events.*;
  import flash.display.*;
  import flash.media.*;
  import flash.net.*;
  import flash.utils.*;
  import src.*;
 
  public class str extends MovieClip {
 
    public function str() {
 
                var myRoot:MovieClip = (this.root as MovieClip);
          myRoot.gotoAndStop(1);
    }
 }
}

браво компилируется и марширует по всем кадрам в бесконечном цикле...

gloomyBrain 02.03.2010 20:48

сделайте trace(this.root)


Часовой пояс GMT +4, время: 09:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.