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

firefedot 22.11.2013 00:18

Переход по кадрам из класса
 
Доброе...
Подскажите как из подгружаемого класса перейти на нужный кадр.
На таймлайне 5 кадров. на 5 кадре начинает работу класс. по завершению нужно перейти а первый кадр, его label = "startTest ".
Код AS3:

gotoAndPlay("startTest ");

ругается на то что не может найти кадр сцене
Цитата:

ArgumentError: Error #2109: Метка кадра startTest в сцене startTest не найдена.
at flash.display::MovieClip/gotoAndPlay()
Если пишу так:
Код AS3:

gotoAndPlay("startTest ","Scene1");

тоже ругается:
Цитата:

ArgumentError: Error #2108: Сцена Scene1 не найдена.
at flash.display::MovieClip/gotoAndPlay()
Подскажите как правильно настроить переход к нужному кадру?
Спасибо.

ZackMercury 22.11.2013 01:53

Код AS3:

"startTest "

А зачем вам пробел в идентификаторе?

firefedot 22.11.2013 07:15

тут пробел - это опечатка в коде его нет...

Hauts 22.11.2013 08:42

firefedot, очевидно, что если метка есть, а плеер ругается на её отсутствие, значит вы не с тем мувиклипом работаете.

Добавьте trace-ов после каждой строчки и проверьте, к чему вы обращаетесь, вызывая gotoAndPlay.

firefedot 22.11.2013 12:31

Там суть такая: идут кадры в каждом есть свои мувиклипы, на последнем кадре их тоже много, и вызывается класс, повешен на один клип, по выполнению класса, хочу перейти в начала таймлайна.
Не могу понять, как правильно повесить gotoAndPlay, чтобы он пошел в самое начало всего.

Hauts 22.11.2013 12:38

Цитата:

и вызывается класс, повешен на один клип, по выполнению класса, хочу перейти в начала таймлайна
С падежой проблемы :)

Попробуйте создать тестовый фла с аналогичной структурой и скидывайте сюда, посмотрим.

firefedot 22.11.2013 13:56

хм.. да ... с правописание на скорую руку проблемы. прошу прощения)
Вот класс, его вешаю на объект и когда
Код AS3:

package net {
        import flash.display.MovieClip;
        import flash.events.MouseEvent;
        import flash.geom.Point;
 
        public class drag extends MovieClip {
 
                protected var originalPosition:Point;
                public static var i,a,b:int;
 
                public function drag() {
 
                        m = new myVariable();
                        originalPosition = new Point(x,y);
                        buttonMode = true;
                        addEventListener(MouseEvent.MOUSE_DOWN, down);
                }
 
                protected function down(event:MouseEvent):void{
                        parent.addChild(this);
                        startDrag();
 
                        stage.addEventListener(MouseEvent.MOUSE_UP, stageUp);
 
                }
 
                protected function stageUp (event:MouseEvent):void{
                        stage.removeEventListener(MouseEvent.MOUSE_UP, stageUp);
                        stopDrag();
 
                        if(dropTarget){
 
                                if(dropTarget.parent.name == "cel"){
                                        trace(event.target.name);
                                        //scaleX = scaleY = 0.2;
                                        alpha = 0.5;
                                        //y = stage.stageHeight - height - 10;
                                        y=dropTarget.parent.y + 5;
                                        x=dropTarget.parent.x + 5;
 
                                        buttonMode = false;
                                        removeEventListener(MouseEvent.MOUSE_DOWN, down);
 
 
                                }else if(dropTarget.parent.name == "cel2"){
                                        trace(event.target.name);
                                        //scaleX = scaleY = 0.2;
                                        alpha = 0.5;
                                        //y = stage.stageHeight - height - 10;
                                        y=dropTarget.parent.y + 5;
                                        x=dropTarget.parent.x + 5;
 
                                        buttonMode = false;
                                        removeEventListener(MouseEvent.MOUSE_DOWN, down);
 
 
                                } else if(dropTarget.parent.name == "cel3"){
                                        trace(event.target.name);
                                        if (event.target.name == "dnd"){
                                                trace("i = "+i);
                                                i++;
                                                trace("i = "+i);
 
                                          gotoAndPlay("startTest");
                                        } else if(event.target.name == "dnd2"){
                                                a++;
                                                trace("a = "+a);
                                        }else if(event.target.name == "dnd3"){
                                                b=b+6;
                                                trace("b = "+b);
                                        }
                                        //scaleX = scaleY = 0.2;
                                        alpha = 0.5;
                                        //y = stage.stageHeight - height - 10;
                                        y=dropTarget.parent.y + 5;
                                        x=dropTarget.parent.x + 5;
 
                                        buttonMode = false;
                                        removeEventListener(MouseEvent.MOUSE_DOWN, down);
 
 
                                }
 
                        }else{
                                returnToOriginalPosition();
                        }
                }
 
                protected function returnToOriginalPosition():void{
                        x = originalPosition.x;
                        y = originalPosition.y;
                }
 
        }
 
}


Hauts 22.11.2013 14:55

firefedot, мне этот код ничего не говорит о вашей задаче, но говорит о ваших некритических ошибках.

Боюсь я не в силах вам помочь до тех пор, пока не выложите архив с исходником. С упрощенным исходником.

firefedot 22.11.2013 16:43

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

Добавлено через 1 минуту
А вот вообще, если я в классе вызывают gotoAndPlay, то проблем быть не должно или он работает только внутри того мувика, в котором вызывается класс?
Блин, надо все-таки Мука прочитать...

alexandrratush 22.11.2013 17:11

Цитата:

Блин, надо все-таки Мука прочитать...
И не писать код в кадрах, потому что так тяжелее отследить работу программы.

firefedot 22.11.2013 17:14

полностью согласен, когда написал часть в классе., оценил полное преимущество классов, но так как половину все-таки накатал в кадрах. и плюс еще анимации... то мозг шевелится...

Добавлено через 3 минуты
послушайте, а могу же через импорт получить переменную из класса?

alexandrratush 22.11.2013 17:29

Если static переменная, то можно просто написать так
Код AS3:

MyClass.staticVar = 'test';

Иначе нужно создавать экземпляр класса.

Hauts 22.11.2013 17:32

firefedot, кажется вам очень нужно теорию подтянуть.

firefedot 22.11.2013 17:35

С теорией согласен. но у меня большая проблема с синтаксисом. как в русском, так и в AS3 ) Стараюсь на верстать, жаль что писать приходиться не так часто большие вещи...

А вообще я пока так сделал, видимо не грамотно .. но кажись за работало.
в кадре написал:
Код AS3:

import net.drag;
import flash.events.MouseEvent;
 
var ui:int;
ui=net.drag.all;
trace(ui);
 
addEventListener(MouseEvent.CLICK, timerClick);
 
function timerClick(event:MouseEvent):void{
        ui=net.drag.all;
        trace("Кликнули по столу");
        trace("ui = " +ui);
}


alexandrratush 22.11.2013 17:41

Когда прочитаете Мука, и напишите его зоопарк, то все станет на свои места, и синтаксис тоже.
Вот например, если вы импортировали класс, то потом можно обращаться к классу без названия пакета net
Код AS3:

ui= drag.all;

И названия давать понятные, не timerClick, а например stageMouseClick. Через месяц вы откроете этот код и не поймете, что это за таймер, который обрабатывает нажатие на стейдж.

firefedot 22.11.2013 17:49

Соглашусь с вами...
Не собираюсь спорить, действительно, пойду сегодня Мука прочту...


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

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