Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.08.2010, 13:41
umnikus вне форума Посмотреть профиль Отправить личное сообщение для umnikus Найти все сообщения от umnikus
  № 1  
Ответить с цитированием
umnikus

Регистрация: Aug 2010
Сообщений: 3
По умолчанию Непонятки с работой addChild в package

Всем доброго времени суток.

Проблема следующая.
Для корректной работы проекта требуется отдельный класс, который будет выполнять повторяющиеся операции, которые вызывать нужно из разных мувиклипов. Идея состоит в использовании лишь функций класса, так как неизбежно возникает проблема с обращением в экземплярам, созданных в других мувиках.

Код пакета.
Код 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, как на неизвестный метод, не ругается.

В теле первого кадра:
Код AS3:
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. Но если их убрать из пакета отсюда и добавить в кадр, как:

Код AS3:
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, из-за которых не работает данный вариант. Если я изобретаю велосипед, то прошу подсказать более рациональный способ.
Заранее спасибо.

Старый 13.08.2010, 13:47
vinch вне форума Посмотреть профиль Отправить личное сообщение для vinch Найти все сообщения от vinch
  № 2  
Ответить с цитированием
vinch

Регистрация: Feb 2010
Сообщений: 95
Наверное, нужно добавить myService с помощью addChild? Он же Sprite.
Если я все правильно понял.
Ты добавляешь четыре мувика в myService, а его самого никуда не добавляешь - вот и trace работают, но мувиков не видно.
Так:
Код AS3:
stop();
import main.Service;
var myService:Service = new Service();
addChild(myService);
.......


Последний раз редактировалось vinch; 13.08.2010 в 13:50.
Старый 13.08.2010, 13:51
umnikus вне форума Посмотреть профиль Отправить личное сообщение для umnikus Найти все сообщения от umnikus
  № 3  
Ответить с цитированием
umnikus

Регистрация: Aug 2010
Сообщений: 3
Голова моя садовая. Точно.
Спасибо Вам большое
-----------------------------



Добавлено через 7 часов 29 минут
ДРУЗЬЯ! Промучался весь день, но так и не постиг AS3 через путь обращения к классам.

Плюнул и решил сделать с помощью инстансов. Но вот какая беда.
Программно создаю мувик myMain от созданного в библиотеке main. В этом мувике находится labels (instance:myLabels, всякие кнопки) и panels (instance:myPanels, панельки для красоты). При нажатии на любую кнопку в labels должна происходить анимация labels и panels по уходу с экрана с помощью твинов.
Код AS3:
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;   
 
coll_button.addEventListener(MouseEvent.CLICK,goCollection);
 
function goCollection(e:MouseEvent){
 
 
var TweenX:Tween = new Tween((getChildByName("???") as MovieClip);, "x", None.easeNone, 0, 1280, 1, true);
var TweenY:Tween = new Tween((getChildByName("???") as MovieClip);, "y", None.easeNone, 0, 0, 1, true);
}
Но я не знаю, как мне обратиться к ним при такой вложенности из labels, где находятся сами кнопки.

Добавлено через 9 часов 14 минут
Все, разобрался сам просто перенес Прослушиватели Событий в мувик постарше и оттуда спускался по иерархии.


Последний раз редактировалось umnikus; 13.08.2010 в 21:41.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
addChild , package
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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