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

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

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

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Только почему-то битмап не дорисовывает последнюю картинку...

Код:
import flash.display.BitmapData;

var my_mcl:MovieClipLoader = new MovieClipLoader();
var myListener:Object = new Object();

var count=0;
var flag:Boolean = true;//флаг, сигнализирующий возможность следующей загрузки
var i:Number = 1;//счетчик файлов, клипов
var N:Number = 30;//количество картинок
myListener.onLoadInit = function(target_mc:MovieClip) {
	count++;
	flag = true;
};
my_mcl.addListener(myListener);
this.onEnterFrame = function():Void {
	if (flag) {   
	var zzz = "mc"+i;
	var xxx = "mc" + (i-1);
	var qqq = "dmc" +i;
	var www = "dmc" + (i-1);
	flag = false;
	var bmd:BitmapData = new BitmapData(80, 80, true, 0x00000000);
	bmd.draw(this[xxx]);
	this[www].attachBitmap(bmd, this.getNextHighestDepth(), "auto", true);
	this.createEmptyMovieClip(zzz, this.getNextHighestDepth());
	this.createEmptyMovieClip(qqq, this.getNextHighestDepth());	
	if(i == 1) {
		this[zzz]._x = 5;
		this[zzz]._y = 5;
		this[qqq]._x = 5;
		this[qqq]._y = 430;
	} else if( i <= 6) {
		this[zzz]._x = this[xxx]._x + 85;
		this[zzz]._y = this[xxx]._y;
		this[qqq]._x = this[www]._x + 85;
		this[qqq]._y = this[www]._y;
	} else if( i == 7){
		this[zzz]._x = 5;
		this[zzz]._y = this[xxx]._y + 85;
		this[qqq]._x = 5;
		this[qqq]._y = this[www]._y + 85;
	} else if (i <= 12) {
		this[zzz]._x = this[xxx]._x +85;
		this[zzz]._y = this[xxx]._y;
		this[qqq]._x = this[www]._x +85;
		this[qqq]._y = this[www]._y;
	} else if (i == 13) {
		this[zzz]._x = 5;
		this[zzz]._y = this[xxx]._y + 85;
		this[qqq]._x = 5;
		this[qqq]._y = this[www]._y + 85;
	} else if (i<= 18) {
		this[zzz]._x = this[xxx]._x + 85;
		this[zzz]._y = this[xxx]._y;
		this[qqq]._x = this[www]._x +85;
		this[qqq]._y = this[www]._y;
	} else if (i == 19) {
		this[zzz]._x = 5;
		this[zzz]._y = this[xxx]._y + 85;
		this[qqq]._x = 5;
		this[qqq]._y = this[www]._y +85;
	} else if (i <= 24) {
		this[zzz]._x = this[xxx]._x + 85;
		this[zzz]._y = this[xxx]._y;
		this[qqq]._x = this[www]._x + 85;
		this[qqq]._y = this[www]._y;
	} else if (i == 25) {
		this[zzz]._x = 5;
		this[zzz]._y = this[xxx]._y + 85;
		this[qqq]._x = 5;
		this[qqq]._y = this[www]._y + 85;
	} else {
		this[zzz]._x = this[xxx]._x + 85;
		this[zzz]._y = this[xxx]._y;
		this[qqq]._x = this[www]._x + 85;
		this[qqq]._y = this[www]._y;
	}
	my_mcl.loadClip("images/"+i+".jpg", zzz);
	i++;
	if (i>N) {
	     delete this.onEnterFrame; break;
	}
}
__________________
Убейте меня!

Старый 30.07.2008, 18:12
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 12  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Отвлечемся на секунду от того, как программа получает список файлов. Это можно изменить и потом, все обдумав и обсудив с заказчиком.
Послушайте, джонатан, все операции с загруженными картинками можно проводить только после загрузки. Обратите внимание, что метод onLoadInit имеет ссылку на загруженное изображение (клип, который теперь это изображение). Т.е. в коде
Код:
mclLst.onLoadInit = function(_mc) {
    trace(_mc)
}
в теле обработчика у Вас есть ссылка _mc. Воспользуйтесь!
pS Уважаю мнение коллег, но последовательная загрузка вовсе не является обязательным условием. Один лоадер прекрасно грузит сотню картинок одновременно, и для каждой произойдет событие и будет получена ссылка на клип. А уж дальше все в наших руках))))
__________________
Reality.getBounds(this);

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

Регистрация: May 2008
Сообщений: 476
Джонатан! Вот второй вариант последовательной загрузки изображений без onEnterFrame (на мой взгляд эффективнее) - см.вложение, если понадобиться.
Последовательная загрузка может понадобиться в случае когда Вам необходимо во чтобы то ни стало загрузить какое-либо изображение первым, вторым,..., независимо от его размера (в байтах). Т.е. порядок срабатывания onLoadInit будет зависить непосредственно от порядка загрузки, установоленного разрабочиком, а не от размера загружаемых изображений.
__________________
Случайность, господа, это знаете ли непознанная необходимость.


Последний раз редактировалось Alex_beginner; 30.07.2008 в 18:25.
Старый 31.07.2008, 13:04
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 14  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Alex_beginner, спасибо за предыдущий исходник! Все заработало! За этот тоже спасибо, полюбому пригодится.
Единственный недостаток, в том, что картины грузятся и размещаются в еврейском порядке (справа на лево), но уж это я думаю сам решу.
Wolsh, да! Спасибо, я уже понял. Просто раньше не знал что это такое. Теперь буду знать.
Всем спасибо, огромнейшее! Незнаю, что бы я делал без вашей доброты, понимания, и отзывчивости!

//UPDATE

Факинг шит! Не сказать, что хорошо, что MCL грузит фотки в разнобой, мне же надо чтобы когда жмякнешь на превью (bmd) показывалась фотка, соответствующая картинке на превью. А у меня получаеьтся когда я перевожу в битмап, фотки распологаются в разброс, а нумеруются по порядку...

Никто не подскажет, как с этим быть?
__________________
Убейте меня!

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Чтож, продолжаем курс)))
Хотя я не понял, почему в разнобой, если загрузка последовательная. Или она не последовательная?)))) Я под последовательной понимаю что пока первая картинка не загрузилась, загрузка второй не начинается. Если так, то откуда разнобой?
Теперь о структурировании хаоса. Если бы Вы порылись для начала в том, что здесь выкладывают товарищи на эту тему, то заметили бы одну характерную деталь. Для загрузки картинки создается некий контейнер - пустой клип. В этом контейнере создается еще один пустой клип, в который собственно и грузится картинка. Зачем?
Затем, что клип, в который будет загружаться картинка, не способен сохранить присвоенные ему свойства - после загрузки они исчезнут. Но его контейнер может. Поэтому в цикле или рекурсии, где Вы запускаете загрузки, Вы сохраняете в свойстве контейнера некий идентификатор, допустим итератор цикла или другой каунтер. И тогда контейнер картинки будет хранить этот ID, и после загрузки Вы можете узнать его через mc._parent.ID. Естественно, таким же образом в свойствах контейнера Вы можете сохранить ссылку на большое изображение и все прочие данные, связанные с этим изображением. Посмотрите, например, тут
http://www.flasher.ru/forum/showthread.php?t=112985
__________________
Reality.getBounds(this);

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

Регистрация: May 2008
Сообщений: 476
Джонатан! Давайте поступим так. Вы полностью изложите что бы Вы хотели реализовать, в деталях желательно, а мы, в свою очередь попытаемся это воплотить в жизнь. А уж потом, развернем дискуссию на тему: "Ошибки кода, загрузки изображений (клипов)..., работа с BitmapData". Если Вы согласны дайте нам знать, письменно изобразив, то что Вы хотели бы реализовать. Дело в том, что мы знаем только поверхностные черты Вашего проекта, и поэтому, приходиться использовать наводящие вопросы, реплики и даже исходники, но пока безрезультатно. Давайте будем конструктивнее в нашей с Вами работе.
__________________
Случайность, господа, это знаете ли непознанная необходимость.

Старый 31.07.2008, 17:15
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 17  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Alex_beginner, я думаю это лишнее. Я уже добился того, его хотел. И у меня осталсь один очень странный баг. Причем он настолько странный, что просто я в шоке. Короче. Еще раз низкий поклон вам. Я взял ваш вчерашний исходник (Последовательная загрузка изображений (created_by_Alex_beginner,v2).rar) и переделал его под свои нужды. Так вот, все вроде бы как отлично работает, но есть одно но! Я думаю объяснять буде никчему, лучше увидьте её. А как работает флешка я счас объясню:

Создаются клипы:
mc + i
dmc + i
[mc + i]fotoCountainer

Создаются 2 объекта класса BitmapData
1.bmd
2.bmd2

В [mc + i]fotoCountainer загружаются фотки, и срабатывает onLoadInit. Он делает mc + i.alpha = 0. Битмап даты перерисовывают их. bmd перерисовав помещает в dmc+i, а bmd в mc + i. После этого [mc + i]fotoCountainer удаляется.
Получается, что битмапы, лежащие в mc+i сразу не видны, а видны только их копии размещенные в dmc+i. Но если нажать на однин из dmc+i то mc+i становится _alpha 100.

Так вот, если клацать по 8ой - 30ой фотке, то все работает прекрасно, но если по 1-7 то не появляются. Но как только флешку чуть растянешь (сам плеер) то фотка появляеится. Бред какой-то.
Смотрите. (флешку тянуть не получится, можно сменить размер окна броузера, тогда тоже появится)
Креплю исходник.

Может кто знает чт это такое???
Вложения
Тип файла: zip Копия Ordered_loading(v2).zip (6.2 Кб, 61 просмотров)
__________________
Убейте меня!

Старый 31.07.2008, 17:42
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 18  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Хех! Любопытный сайт у Вас получился. Да, странноватый эффект - при ресайзе браузера картинка появляется. А Вы не пробовали картинки менять (другие форматы)?

Просьба, выложите файл в формате Flash8 (у меня нет CS3, sorry).
__________________
Случайность, господа, это знаете ли непознанная необходимость.

Старый 31.07.2008, 18:14
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 19  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вот в этом куске
Код:
this[qqq].onRelease = function() {
        for(var j = 0; j <= N; j++) {
        var ttt = "mc" +j;
        var hhh = "dmc" +j;
            this._parent[hhh]._alpha = 100;
            this._parent[ttt]._alpha = 0;
            //var twOut = new Tween(this._parent[ttt], "_alpha", mx.transitions.easing.Regular.easeOut, 100, 0, 0.5, true);
    }
            this._parent[zzz]._alpha = 50;
            this._alpha = 20;
            //var twIn = new Tween(this._parent[zzz], "_alpha", mx.transitions.easing.Regular.easeIn, 0, 100, 1, true);
    }
Чему равен zzz В МОМЕНТ НАЖАТИЯ ? Протрейсите
_________
UPD: А у меня всё появляется, во флэше.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 31.07.2008 в 18:52.
Старый 31.07.2008, 19:59
джонатан вне форума Посмотреть профиль Отправить личное сообщение для джонатан Найти все сообщения от джонатан
  № 20  
Ответить с цитированием
джонатан
 
Аватар для джонатан

Регистрация: Jan 2007
Адрес: Минск
Сообщений: 781
Отправить сообщение для джонатан с помощью Skype™
Wolsh, он равен mc+(номер клипа по которому клацнул.)

Нееее... Тут все ок. Я правда счас уже переделал. Короче, всеравно проблема непонятна, но как избежать её я придумал.
Вобщем. Кто смотрел, получается у меня верхние картинки все расположены в одном и том же месте, а нижние на расстоянии друг от друга. Так вот, (у меня в коде закоменчено) я сделал чтобы и верхние тоже так-же распологались не в одном и том-же месте, и все стало работать. Как я понял, видимо глюк был, с Глубиной клипов, но почему только в первых 8-ми, я непонял.

Но конечно это тоже не выход, т.к. я буду переносить этот код в свою галлерею, и там, мне нужно чтобы основные фотки стояли в одно и том-же месте...

//UPDATE

Все! Сделал! Действительно проблемы была c глубинами. Почему глючит я так и не понял, от глюга избавился. Я сделал, чтобы после того как клип становится _alpha = 0, еще вдобавок прописал _visible = false; Ну а потом когда по нему жмешь, _visible = true, и альфа 100 через Tween. Все заработало!

Спасибо всем кто старался мне помочь, очень приятно, что уже никто не посылает меня в хелп а реально старается помочь. Особенное спасибо Alex_beginner`у за мега активное участие в решении моей проблемы, и Wolsh`за четкие объяснения многих вещей.
__________________
Убейте меня!

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

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

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


 


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


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