umnikus
13.08.2010, 13:41
Всем доброго времени суток.
Проблема следующая.
Для корректной работы проекта требуется отдельный класс, который будет выполнять повторяющиеся операции, которые вызывать нужно из разных мувиклипов. Идея состоит в использовании лишь функций класса, так как неизбежно возникает проблема с обращением в экземплярам, созданных в других мувиках.
Код пакета.
package main{
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;
public class Service extends Sprite {
public var myLabels:labels = new labels();
public var myshow:slideshow = new slideshow();
public var newlogo:logo = new logo;
public var myMenu:menu = new menu();
public function slide_show():void
{
addChild(myshow);
}
public function panels_load():void
{
addChild(myMenu);
var TweenX:Tween = new Tween(myMenu, "x", None.easeNone, 1280, 0, 1, true);
var TweenY:Tween = new Tween(myMenu, "y", None.easeNone, 0, 0, 1, true);
}
public function menu_load():void
{
addChild(myLabels);
var TweenX:Tween = new Tween(myLabels, "x", None.easeNone, -1280, 0, 1, true);
var TweenY:Tween = new Tween(myLabels, "y", None.easeNone, 0, 0, 1, true);
}
public function menu_unload():void
{
addChild(myLabels);
var TweenX:Tween = new Tween(myLabels, "x", None.easeNone, 0, -1280, 1, true);
var TweenY:Tween = new Tween(myLabels, "y", None.easeNone, 0, 0, 1, true);
}
public function panels_unload():void
{
addChild(myshow);
var TweenX:Tween = new Tween(myMenu, "x", None.easeNone, 0, 1280, 1, true);
var TweenY:Tween = new Tween(myMenu, "y", None.easeNone, 0, 0, 1, true);
}
}
}
Четыре объявленных экземпляра класса - мувики, созданные в библиотеке. Расширение на Sprite добавлено, все компилируется, на addChild, как на неизвестный метод, не ругается.
В теле первого кадра:
stop();
import main.Service;
var myService:Service = new Service();
myService.slide_show();
myService.panels_load();
myService.menu_load();
myService.newlogo.x=30;
myService.newlogo.y=600;
Никакой анимации не видать. При этом на выходе срабатывают все trace, если их добавить в тело функций из пакета. То есть попросту игнорируются все addChild. Но если их убрать из пакета отсюда и добавить в кадр, как:
stop();
import main.Service;
var myService:Service = new Service();
addChild(myService.myshow);
addChild(myService.myLogo);
addChild(myService.myMenu);
addChild(myService.newlogo);
myService.slide_show();
myService.panels_load();
myService.menu_load();
myService.newlogo.x=30;
myService.newlogo.y=600;
то все сразу начинает прекрасно работать, но, увы, переходить нужно именно к правильной схеме.
Прошу подсказать, где же ошибка или мое непонимание концепций AS3, из-за которых не работает данный вариант. Если я изобретаю велосипед, то прошу подсказать более рациональный способ.
Заранее спасибо.
Проблема следующая.
Для корректной работы проекта требуется отдельный класс, который будет выполнять повторяющиеся операции, которые вызывать нужно из разных мувиклипов. Идея состоит в использовании лишь функций класса, так как неизбежно возникает проблема с обращением в экземплярам, созданных в других мувиках.
Код пакета.
package main{
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;
public class Service extends Sprite {
public var myLabels:labels = new labels();
public var myshow:slideshow = new slideshow();
public var newlogo:logo = new logo;
public var myMenu:menu = new menu();
public function slide_show():void
{
addChild(myshow);
}
public function panels_load():void
{
addChild(myMenu);
var TweenX:Tween = new Tween(myMenu, "x", None.easeNone, 1280, 0, 1, true);
var TweenY:Tween = new Tween(myMenu, "y", None.easeNone, 0, 0, 1, true);
}
public function menu_load():void
{
addChild(myLabels);
var TweenX:Tween = new Tween(myLabels, "x", None.easeNone, -1280, 0, 1, true);
var TweenY:Tween = new Tween(myLabels, "y", None.easeNone, 0, 0, 1, true);
}
public function menu_unload():void
{
addChild(myLabels);
var TweenX:Tween = new Tween(myLabels, "x", None.easeNone, 0, -1280, 1, true);
var TweenY:Tween = new Tween(myLabels, "y", None.easeNone, 0, 0, 1, true);
}
public function panels_unload():void
{
addChild(myshow);
var TweenX:Tween = new Tween(myMenu, "x", None.easeNone, 0, 1280, 1, true);
var TweenY:Tween = new Tween(myMenu, "y", None.easeNone, 0, 0, 1, true);
}
}
}
Четыре объявленных экземпляра класса - мувики, созданные в библиотеке. Расширение на Sprite добавлено, все компилируется, на addChild, как на неизвестный метод, не ругается.
В теле первого кадра:
stop();
import main.Service;
var myService:Service = new Service();
myService.slide_show();
myService.panels_load();
myService.menu_load();
myService.newlogo.x=30;
myService.newlogo.y=600;
Никакой анимации не видать. При этом на выходе срабатывают все trace, если их добавить в тело функций из пакета. То есть попросту игнорируются все addChild. Но если их убрать из пакета отсюда и добавить в кадр, как:
stop();
import main.Service;
var myService:Service = new Service();
addChild(myService.myshow);
addChild(myService.myLogo);
addChild(myService.myMenu);
addChild(myService.newlogo);
myService.slide_show();
myService.panels_load();
myService.menu_load();
myService.newlogo.x=30;
myService.newlogo.y=600;
то все сразу начинает прекрасно работать, но, увы, переходить нужно именно к правильной схеме.
Прошу подсказать, где же ошибка или мое непонимание концепций AS3, из-за которых не работает данный вариант. Если я изобретаю велосипед, то прошу подсказать более рациональный способ.
Заранее спасибо.