Форум 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=125480)

_moscow 25.05.2009 15:38

остановить главную шкалу из мувика
 
Приветствую !

Столкнулся с такой элементарной проблемой

Если во фрейме главной шкалы прописать stop(); и пишешь родительский класс
то выбивает ошибку - а почему так ?

Вот сам вопрос , на главой шкале пишу stop();
ложу мувик на сцену и в мувеки в самом классе пишу play();
но главная шкала не сдвигается на второй кадр так и остается на первом - а
почему так ?

Stargazer 25.05.2009 15:45

Вы знаете, что шкала у каждого своя?

_moscow 25.05.2009 15:47

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

Stargazer 25.05.2009 15:49

Можно. :)

_moscow 25.05.2009 15:50

Цитата:

Сообщение от Stargazer (Сообщение 822859)
Можно. :)

очень понятнно !

Stargazer 25.05.2009 16:00

Сейчас я в основном использую AS2, хотя на AS3 у меня уже почти готов один довольно-таки весомый проект. Так вот - в прелоадере я использовал this.parent, а больше мне нигде не приходилось обращаться к главной шкале :).

_moscow 25.05.2009 16:04

мне тоже для этого нужнно

Добавлено через 4 минуты
только всеравнно не получается

Код AS3:

 
package main {
        import flash.display.MovieClip;
        import flash.events.*;
 
        public class Preloader extends MovieClip {
                public function Preloader() {
 
                        this.parent.play();
 
                }
 
 
 
        }
}


Stargazer 25.05.2009 16:38

Код AS3:

(parent as MovieClip).gotoAndPlay(2);

Это то, что у меня работает. Хотя я не уверен, что эта конструкция полностью верна (потому что не уверен, что сцена является мувиклипом). Тем не менее работает и не выдаёт ошибок даже при строгой проверке синтаксиса.

_moscow 25.05.2009 16:50

Спасибо большое !

Еще один вопрос волнует очень ,

Если во фрейме главной шкалы прописать stop(); и пишешь родительский класс
то выбивает ошибку - а почему так ?

Получается если прописал stop() значит уже нельзя использовать родительский класс ?

cleptoman 25.05.2009 16:52

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

а в родителе поймав это событие уже делайте что хотите.

Timerlan 25.05.2009 16:52

а какой смысл писать стоп в кадре если вы пишете родительский класс? написать в конструкторе класса стоп плохо что ли?:)

_moscow 25.05.2009 17:01

Я просто не в курсе , я прелоадер делаю !

Тогда вопрос а сам код прелоадера можнно засунуть в конструктор родительского класса ?

И когда я в конструкторе родительского класса прописую stop(); выдает ошибку


1180: Call to a possibly undefined method stop.

Timerlan 25.05.2009 17:03

а потому что родительский класс у вас от спрайта наследуется, а надо от мувиклипа

cleptoman 25.05.2009 17:03

наследуетесь от чего?

_moscow 25.05.2009 17:11

Цитата:

Сообщение от Timerlan (Сообщение 822917)
а потому что родительский класс у вас от спрайта наследуется, а надо от мувиклипа


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

Timerlan 25.05.2009 17:32

ну вы прописали родительский класс. а что вы в самом классе то пишите? или вы его даже не создавали, положившись на автоматическое создание?:)

_moscow 25.05.2009 17:37

Цитата:

Сообщение от Timerlan (Сообщение 822945)
ну вы прописали родительский класс. а что вы в самом классе то пишите? или вы его даже не создавали, положившись на автоматическое создание?:)

создавал конечно вот код его

Код AS3:

 
 
package main {
              import flash.display.Sprite;
              import flash.display.MovieClip;
 
 
 
 
                      public class Main extends Sprite {
 
 
                                  public function Main() {
 
                                        stop()
 
 
 
                                  }
 
 
  }
}


Timerlan 25.05.2009 17:39

ну вот у вас extends Sprite, а надо extends MovieClip. и все будет работать:)

Gal4enochek 25.05.2009 17:47

Возможно ошибка в
Код AS3:

this.parent.play();

возникает, так как парента у вашего клипа еще нет. так как не добавили ваш клип на сцену с помощью addChild().
Запускаете парент только когда ваш клип был добавлен на сцену
Код AS3:

public function MyClip(){
        super();
        this.addEventListener(Event.ADDED_TO_STAGE, stageHandler);
}
 
privatefunction stageHandler(event:Event):void {
        this.parent.play();
}


_moscow 25.05.2009 18:19

Спасибо !

Еще вопрос который для меня пока остается не понятным ,

значит я делаю прелоадер так как флешка большого размера - могу я его сделать по следующей схеме - чтоб не использовать stop(); на флеймах

На главной шкале 2 фрейма первый пустой а на другом все мувики которые во флешке

подключаю родительский класс

Код AS3:

 
package main {
              import flash.display.Sprite;
              import flash.display.MovieClip;
 
                        public class Main extends MovieClip {
 
                                public function Main() {
 
                        stop(); // тормажу на первом фрейме
 
                                        /*
                                          дальше контролирую весь процесс загрузки флешке
                                          , вывожу на экран процент который загрузился ,
                                            и после того как процент загрузке будет 100%
                                            перехожу на другой фрейм
                                        */

 
                                  gotoAndStop(2);
 
                }
 
 
  }
}


будет так работать ? или родительский класс будет доступен только после всей загрузке флешке ?

Timerlan 26.05.2009 12:06

будет


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

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