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

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

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

Регистрация: Jun 2008
Сообщений: 56
The bomb! addChild через getChildByName

Всем привет,
Для моей задачи (он лайн слаид шоу с анимацией переходов) надо манипулировать загруженными изображениями.
Возможно ли после того как все изображения погрузятся в лодер и добавлять содержимое лодеров в чилды контейнеров обращаясь к ним по именам?
Обратиться к ним через getChildByName – не получается
Так не работает:
Код:
getChildByName("container1").addChild(getChildByName("myLoader1"));
пока я просто помещаю контейнеры с содержимым и ставлю alpha-0, потом манипулирую с прозрачностью обращаясь к чилду контейнера по имени. Но так наверное будет память нерационально использоваться?
Посоветуйте как грамотнее решить вопрос.
Спасибо.

Старый 16.06.2008, 12:48
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 2  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Создай массив и помещай туда прелоадеры. Назначай им загрузку. Проходись по массиву через определенное время - бери следующее загруженное изображение. Обнуляй номер, подходя к концу массива. getChildByName - используй только для объектов которые были созданы не программно.

Старый 16.06.2008, 15:00
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 3  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
спасибо за ответ.
Цитата:
Создай массив и помещай туда прелоадеры.
Так?
Код:
var Names:Array=new Array ("loader1","loader2","loader3");

for (var i:Number=0; i<3; i++)
{
	//var Names[i]:Loader =new Loader; - ТАК НЕ РАБОТАЕТ!
	
	var myLoader:Loader =new Loader;// так работает
	myLoader.name=Names[i];
	trace (myLoader.name)
	}
Так ведь нельзя будет к ним обращаться по имени чилда чтобы по желанию добавлять загруженные лодеры в контейнер и потом на стэйдж?

А если загруженые сразу помещать и ставить alpha=0, сильно память съесться по сравнению с добавлением в контейнер?

спасиба.

Старый 16.06.2008, 18:39
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Хм три картинки...
Загрузка рисунков с xml в спрайты
http://dnadillo.dn.ua/fla/XML/img-xml-img.swf
http://dnadillo.dn.ua/fla/XML/img-xml-img.zip
http://dnadillo.dn.ua/fla/XML/img_xml.xml

Суть: делается спрайт-контейнер.
Создается массив спрайтов sprite_array[], они помещаются на спрайт контейнер, обращатся к ним можно по цифре массива sprite_array[image_list].
Потом проматывать можно так:
Код:
 topPosition = my_gallery_container.numChildren - 1;
 my_gallery_container.setChildIndex(sprite_array[image_list], topPosition);


Последний раз редактировалось Alex Lexcuk; 16.06.2008 в 18:48.
Старый 17.06.2008, 10:23
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 5  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
Огромнейшее спасибо!
чесно говоря не знал, что мувики и спрайты можно помещать в массив и обращаться к ним (только пару месяцев флэширую).
Это решает проблему!!!
Еще вопрос, с вашего позволения, для расширения кругозора.
почему нельзя обратиться к чилду через getChildByName котороый находится в другом классе?
Код:
filmClass.getChildByName("pic0").alpha=0;
где filmClass - класс документа, обращение идет из класса чилды которого добавляются в документ.
Пишет ошибку:
Цитата:
1061: Call to a possibly undefined method getChildByName through a reference with static type Class.
вроде все библиотеки которые надо импортировал.

Старый 17.06.2008, 13:04
Felicast вне форума Посмотреть профиль Отправить личное сообщение для Felicast Найти все сообщения от Felicast
  № 6  
Ответить с цитированием
Felicast
 
Аватар для Felicast

Регистрация: Feb 2008
Адрес: Череповец
Сообщений: 623
Отправить сообщение для Felicast с помощью ICQ
скорее всего надо так:
Код:
(root as filmClass).getChildByName("pic0").alpha=0;
как я понял filmClass - это класс, а не объект.
__________________
я могу стать всем, если только захочу

Старый 17.06.2008, 13:25
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 7  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
вот на такой код (где loadFunctionCount - переменная в классе документа )
Код:
if (filmClass.loadFunctionCount>1) {
trace (" УСЛОВИЕ ПРОШЛО --filmClass.loadFunctionCount>1--")
(root as filmClass).getChildByName("pic0").alpha=0;
}
пишет такое в окошке Output:
Цитата:
УСЛОВИЕ ПРОШЛО --filmClass.loadFunctionCount>1--
TypeError: Error #1006: value is not a function.
at MethodInfo-9()
PS как я писал я решил проблему через массив, так, что вопрос с getChildByName - носит праздный характер.

Старый 18.06.2008, 00:24
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 8  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Вспомнил одну фишку, это слайд шоу...
http://www.flashandmath.com/basic/tr.../example3.html

Старый 18.06.2008, 15:51
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 9  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Делай все по порядку, к примеру:
1) Создай массив и в цикле запихай в него объекты которые грузят 4 картинки в главном классе:

Код:
var pictures:Array = [];

for (var i =0; i<=3;i++){
pictures[i] = new CustomImage("image" + i + ".jpg");
}
2) Создай новый класс, описывающий поведение CustomImage (CustomImage.as)
Код:
package {

import flash.display.*;
import flash.net.URLRequest;
import flash.events.*;

public class CustomImage extends Sprite {
    private var  loader:Loader;
    public var  isLoaded:Boolean;

   public function CustomImage(url:String):void{
    isLoaded = false;
    loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onLoaded);
    loader.load(new URLRequest(url));

  }

  private function onLoaded(e:Event):void{
     isLoaded = true;
     addChild(Bitmap(loader.content));
  }

}//end class
}//end package
3) Циклом проверяешь все твои кастомИзображения на загрузку (pictures[i].isLoaded == true), если да то добавляешь на сцену addChild(pictures[i]) и работаешь с его свойствами по типу pictures[i].alpha = 0.3 также циклом или по номеру.

з.ы Писал от балды может и где ошибка закралась


Последний раз редактировалось Rzer; 18.06.2008 в 16:32.
Старый 19.06.2008, 12:34
misha_yu вне форума Посмотреть профиль Отправить личное сообщение для misha_yu Найти все сообщения от misha_yu
  № 10  
Ответить с цитированием
misha_yu

Регистрация: Jun 2008
Сообщений: 56
большое спасибо за такой развернутый ответ!
В общем....я так и сделал, только менее рационально (пока разбирался что как работает).
пожалуй оптимизирую попозже как допишу плэйер.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:24.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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