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

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

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

Регистрация: Jun 2005
Сообщений: 22
По умолчанию Загрузка и присоединение картинок

Код:
someclass {
private var display:MovieClip;

private var m1:MovieClip;
private var m2:MovieClip;

public void someMethod():Void
{
  display = _root.createEmptyMovieClip("display",1);
  display._x = 10;
  display._y = 10;
  ...
		
  loadMovie("image1.jpg", m1);
  loadMovie("image2.jpg", m2);
  ...
}
}
Надо сделать некую предзагрузку картинок. Можно ли каким-то образом отобразить содержимое, к примеру, m1 на мувике display? Либо надо для отображения каждый мувик присоединять к _root, ставить на нужное место и менять _visible? Не хочется совершать лишние телодвижения.

Старый 04.01.2006, 19:05
Antares вне форума Посмотреть профиль Найти все сообщения от Antares
  № 2  
Ответить с цитированием
Antares
Banned
[+1 16.05.2006]
[++1 16.05.2006]
[+ 1 21.05.06]
[++ за хамство]
[+1 21.05.2006]
 
Аватар для Antares

Регистрация: Dec 2003
Сообщений: 3,925
Не очень ясна задача. Предзагрузку сделать не проблема. Позиционировать тоже. Но что значит "отображать m1 на мувике display" -- ? Поместить внутрь него нельзя -- только загружать в заранее соданный в нем.

К слову говоря, в AS3 можно любой визуальный объект прицепить любому -- очень удобно

Старый 05.01.2006, 13:10
vecalion вне форума Посмотреть профиль Отправить личное сообщение для vecalion Найти все сообщения от vecalion
  № 3  
Ответить с цитированием
vecalion

Регистрация: Jun 2005
Сообщений: 22
Цитата:
Сообщение от Antares
Не очень ясна задача. Предзагрузку сделать не проблема. Позиционировать тоже. Но что значит "отображать m1 на мувике display" -- ? Поместить внутрь него нельзя -- только загружать в заранее соданный в нем.

К слову говоря, в AS3 можно любой визуальный объект прицепить любому -- очень удобно
Попытаюсь объяснить задачу. Необходимо, чтобы флеш ролик отображал некие загружаемые с сервера объекты (текст + картинка). Отображение происходит по одному объекту. Смена объектов либо по таймауту, либо по желанию пользователя (Next). Для того, чтобы уменьшить нагрузку на сервер, а также чтобы не заставлять пользователя ждать при мануальной смене картинок, был выбран следующий алгоритм: при инициализации, ролик запрашивает с сервера 2 * n объектов. В последующем, после показа n объектов, ролик подгружает еще n объектов.

Для хранения загруженных объектов в памяти можно использовать 2 массива - массив строк для текста и массив мувиков для картинок. Если при отображении объекта для массива текста всё ясно, то для массива мувиков не совсем...

Можно:

1) создать n мувиков, используя createEmptyMovieClip(), выставить им _visible = false, загрузить в них картинки, и при отображении прятать предыдущий мувик, вычислять и выставлять следующему мувику правильные координаты (ибо они постоянно динамически изменяются), показывать его.

2) (то, что я коряво пытался объяснить в первом посте) объявить n мувиков, загрузить в них требуемые картинки, создать один мувик привязанный к какой-то шкале, который сам будет следить и передвигаться в нужные координаты, и при отображении - копировать/переносить/ещечтото мувик с картинкой из памяти в отображаемый мувик

Если (1) реализуемо, но не очень красиво, то на счет реализуемости (2)-ого я сомневаюсь. Я не флешер, поэтому возможно запутался в каких-то элементарных вещах, отсюда и вопрос.

Старый 05.01.2006, 15:04
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
если для 8-ки и подгружаем только изображения, то можно такой подход:
-грузим во временные мувики картинки из переданного массива урлов
-изображение копируем в BitmapData,кладем ссылку в массив, мувики удаляем
-как загрузятся все, вызываем метод onLoad
дальше по мере надобности аттачим из массива нужный битмап куда надо..
Код:
import flash.display.*;
class Someclass {
private var images:Array=[];
public var onLoad:Function;
public var length:Number;
	//грузим, копируем, удаляем
	public function load(urls:Array){
		images=[];
		length=urls.length;
		var o=this;
		for(var counter=length,i=length;i--;){
			var ml =new MovieClipLoader();
			ml.tag=i;
			ml.mc=_root.createEmptyMovieClip('tmp'+i,_root.getNextHighestDepth());
			ml.imgs=images;
			
			ml.onLoadInit=function(){
				var bmp=this.imgs[this.tag]=new BitmapData(this.mc._width,this.mc._height);
				bmp.draw(this.mc);
				this.unloadClip(this.mc);
				this.mc.removeMovieClip();
				if(!--counter)o.onLoad();
			}
			ml.loadClip(urls[i],ml.mc);
		}
	}
	//аттачим битмап в мувик where( для примера..
	public function displayImage(where:MovieClip,num:Number){
		where.attachBitmap(images[num],where.getNextHighestDepth());
	}
}
///////////////пример/////////////
var imageLoader=new Someclass();
imageLoader.load(['p0.jpg','p1.jpg']);
imageLoader.onLoad=function(){
	//trace('loaded');
	_root.onMouseUp=function(){
		var mc=this.createEmptyMovieClip('tmp',this.getNextHighestDepth())
		
		mc._x=random(Stage.width);
		mc._y=random(Stage.height);
		imageLoader.displayImage(mc,random(imageLoader.length));
	}
	
}

Старый 05.01.2006, 15:33
vecalion вне форума Посмотреть профиль Отправить личное сообщение для vecalion Найти все сообщения от vecalion
  № 5  
Ответить с цитированием
vecalion

Регистрация: Jun 2005
Сообщений: 22
Цитата:
Сообщение от silin
если для 8-ки и подгружаем только изображения, то можно такой подход...
Ага, нечто подобное я и искал! Спасибо. А для 7-ки остается только использовать что-то вроде того, что я описал в предыдущем посте под номером (1)?

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

Регистрация: Nov 2003
Адрес: Север
Сообщений: 244
to vecalion:

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

Итак:

Грузишь картинки в невидимые (находящиеся за сценой или _visible = false) мувики.
Делаешь мувик, который будет отображать эти картинки (следишь за его координатами, если тебе надо, и т.д.).
Невидимые мувики после загрузки картинок просто-напросто удаляешь.

И всё. Грузишь по нажатию на кнопку нужную картинку в тот самый мувик, что создал для этого.

Фишка: CACHE ON!

Если ты не используешь при загрузке картинок приёмы, запрещающие их кэширование, то, я думаю, доли секунды, которые потребуются браузеру, чтоб достать из кэша твои картинки -- вполне приемлемая цена за то, чтоб обойтись без использования 8-го Флэша.
__________________
Scio me, nihil scire.


Последний раз редактировалось nyctota; 06.01.2006 в 12:53.
Старый 05.01.2006, 17:00
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 7  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
nyctota предложил хороший вариант, я тоже в большинстве проектов так делаю %))), хотя бывают делал и такой вариант( работает для большинства случаев, и немного геморно бывает с координатами):

создаютется нужное для картинок число мувиков которые лепяться к руту, ну или в какой нить мувик к которому потом могут "достучаться", мувики "контейнеры", и этим "контейнерам" , передаеться ссылка не на саму картинку, а на мув прикрепленный к руту, и контейнер делает с ним свои дела %))

Старый 19.04.2006, 12:08
Vasik1 вне форума Посмотреть профиль Отправить личное сообщение для Vasik1 Найти все сообщения от Vasik1
  № 8  
Ответить с цитированием
Vasik1

Регистрация: Mar 2006
Сообщений: 141
2 silin
Слушай... я новичок... у меня не получается это сделать, как в твоём коде... можешь дать fla файл посмотреть... нужная вещь, пытаюсь реализовать, а сделать не могу... подсказать некому...

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

Регистрация: Apr 2006
Сообщений: 40
silin, подскажи плиз если не трудно как это всё использовать. Я пока ещё в темноте, а так хочется к свету. Если конкретно то как это всё размещать. Было бы супер если бы исходник. Для развития это супер. Заранее спасибо.

Старый 19.04.2006, 13:56
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
я же показал..,
или вы думаете что во фла что-то иначе..
Вложения
Тип файла: zip p0.zip (13.8 Кб, 145 просмотров)

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

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

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


 


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


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