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

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

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

Регистрация: Jul 2009
Сообщений: 21
По умолчанию не работает onEnterFrame

Здравствуйте!

Я без году неделя во флэше... потому попрошу не сердчать!!!

Не могу решить свою проблему!!! есть некий файл XML который подгружается во Flash! и каждый новый фрейм newFrame, стыкуется к предыдущему! что-то типа слайдера... в кадом новом фрейме атачится клип прелоадера newPreload для картинки... но условия работы этого прелоадера newPreload в функция onEnterFrame работает лишь для последнего созданного фрейма newFrame!

проверял с помощью трейса... до функции onEnterFrame видит все клипы newPreload! а внутри onEnterFrame, только последний!!!!

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

Код AS1/AS2:
for(i=0;i<allSoftData.length;i++)
{
	newFrame=slider.blank_slider.attachMovie('frame_soft','frame'+i,i);
	newFrame._y=i*newFrame._height;
 
	newFrame.txt_soft.text=allSoftData[i].firstChild.firstChild;
	newFrame.txt_desc.text=allSoftData[i].firstChild.nextSibling.firstChild;
	newFrame.txt_req.text=allSoftData[i].firstChild.nextSibling.nextSibling.firstChild;
	newPreload=newFrame.mc_load.attachMovie('pic_preloader','preload'+i,i);
 
	var ab = newFrame.mc_pic.loadMovie("xml/"+allSoftData[i].firstChild.nextSibling.nextSibling.nextSibling.firstChild);
 
	trace(newPreload);
 
	onEnterFrame = function(ab,bytesLoaded,bytesTotal)
	{
		trace(newPreload);
 
		if(bytesLoaded<bytesTotal)
		{
			newPreload._alpha = 100;
		}
 
		if(bytesLoaded==bytesTotal)
		{
			newPreload._alpha = 0;
		}
	}
}
Буду очень признателен! т.к. уже просто нет идей... и допонимание с Флешем уже теряется!


Последний раз редактировалось cerberus_nsv; 29.01.2010 в 17:06.
Старый 29.01.2010, 17:27
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Не работает потому что все неправильно.
Используйте MovieClipLoader, если хотите процесс загрузки отслеживать.

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

Регистрация: Jul 2009
Сообщений: 21
процесс загрузки отслеживается! но только onEnterFrame выполняет действия, для последнего i, т.е. фрейма... обходя все предыдущие...
хотя уже переделываю, под MovieClipLoader!!! Спасибо!

но если кто объяснит, мне мою дилемму, чтоб я понял, почему обходит предыдущие, буду признателен!!! раз он находится внутри цикла...

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Ну вы его каждую новую итерацию цикла переопределяете, этот onEnterFrame, вот он для последнего и остается.
__________________
hauts.ru

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

Регистрация: Nov 2007
Сообщений: 1,724
Я один не понимаю эту строчку?
Код AS1/AS2:
onEnterFrame = function(ab,bytesLoaded,bytesTotal)

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Нет, не один. EnterFrame не имеет аргументов.

Старый 29.01.2010, 19:36
cerberus_nsv вне форума Посмотреть профиль Отправить личное сообщение для cerberus_nsv Найти все сообщения от cerberus_nsv
  № 7  
Ответить с цитированием
cerberus_nsv

Регистрация: Jul 2009
Сообщений: 21
исправил!!! спасибо всем! только я начинаю понимать, что для меня этот вариант, что MovieClipLoader, суть не меняют...
что мне нужно сделать, для того, чтоб последняя интерация onEnterFrame не перекрывала предыдущие? или как задать, для какого именно прелоадера newPreload, должен проходить onEnterFrame... надеюсь, что боль менее обхяснил, что надо!!! а то уже плавлюсь!

Код AS1/AS2:
newPreload.onEnterFrame = function()
			{
				loading = newFrame.mc_pic.getBytesLoaded();
				total = newFrame.mc_pic.getBytesTotal();
 
				trace(i);
				trace(loading);
				trace(total);
				trace(newPreload);
 
				if(loading<total)
				{
					newPreload._alpha = 100;
				}
 
				if(loading==total)
				{
					newPreload._alpha = 0;
				}
			}

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

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Итерация. Значит "повторение".
Код AS1/AS2:
newPreload.onEnterFrame = function(){
	var loading = this.getBytesLoaded();
	var total = this.getBytesTotal();
	if(loading<total){
		this._alpha = 100;
	}
 
	if(loading==total){
		this._alpha = 0;
	}
}
Попробуйте так, хотя я не могу до конца врубиться в ваш код.
__________________
hauts.ru

Старый 29.01.2010, 20:07
cerberus_nsv вне форума Посмотреть профиль Отправить личное сообщение для cerberus_nsv Найти все сообщения от cerberus_nsv
  № 9  
Ответить с цитированием
cerberus_nsv

Регистрация: Jul 2009
Сообщений: 21
Тенкс тебе!!! но так не получается, потому, как newPreload и картинка два разных мувика... и getBytesTotal берётся с newFrame.mc_pic, но всё равно спасибо!!! а за интерацию я понял!!! только, не понял почему перекрывает, раз внутри цыкла!

Добавлено через 7 часов 56 минут
Люди помоги пожалуйста разобраться!!!! что именно не так у меня!!! могу отвечать на вопросы, если код не понятен! Используя MovieClipLoader, пришёл к тому, же что было изначально с onEnterFrame!!!

и если кто-то может объясните, почему в трейсе t1 показывает реальные значения с каждой новой интерацией... а в трейсе t2 выдаёт результат последнего и плюс 1?

Код AS1/AS2:
for(i=0;i<allSoftData.length;i++)
		{
			newFrame=slider.blank_slider.attachMovie('frame_soft','frame'+i,i);
			newFrame._y=i*newFrame._height;
			newPreload=newFrame.mc_load.attachMovie('pic_preloader','preload',i);
 
			newFrame.txt_soft.text=allSoftData[i].firstChild.firstChild;
			newFrame.txt_desc.text=allSoftData[i].firstChild.nextSibling.firstChild;
			newFrame.txt_req.text=allSoftData[i].firstChild.nextSibling.nextSibling.firstChild;
 
			var clipLoader = new MovieClipLoader();
			var preloader = new Object();
			clipLoader.addListener(preloader);
 
			clipLoader.loadClip("xml/"+allSoftData[i].firstChild.nextSibling.nextSibling.nextSibling.firstChild, newFrame.mc_pic);
 
			trace(newPreload);
 
			trace("t1="+i);
 
			preloader.onLoadStart = function() 
			{
				trace("t2="+i);
 
				newPreload._alpha = 100;
			}
 
			preloader.onLoadComplete = function() 
			{
				newPreload._alpha = 0;
			}
		}


Последний раз редактировалось cerberus_nsv; 30.01.2010 в 04:04.
Старый 30.01.2010, 09:59
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 10  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
cerberus_nsv, слово "итерация" пишется без буквы Н.

Напишите функции для своих задач, проще будет. Примерно так:
Код AS1/AS2:
for (i=0; i<allSoftData.length; i++) {
    var newFrame = slider.blank_slider.attachMovie('frame_soft', 'frame'+i, i, {_y:i*newFrame._height});
    var newPreload = newFrame.mc_load.attachMovie('pic_preloader', 'preload', i);
    var t1 = allSoftData[i].firstChild.firstChild;
    var t2 = allSoftData[i].firstChild.nextSibling.firstChild;
    var t3 = allSoftData[i].firstChild.nextSibling.nextSibling.firstChild;
    var url = "xml/"+allSoftData[i].firstChild.nextSibling.nextSibling.nextSibling.firstChild;
    setNewFrameTexts(newFrame, t1, t2, t3);
    manageNewPreload(url, newFrame.mc_pic, newPreload);
}
function setNewFrameTexts(frame, t1, t2, t3) {
    frame.txt_soft.text = t1;
    frame.txt_desc.text = t2;
    frame.txt_req.text = t3;
}
function manageNewPreload(url, container, preloader) {
    trace("Загружаем "+url+" в "+container+" и отслеживаем загрузку в "+preloader);
    var clipLoader = new MovieClipLoader();
    var listener = new Object();
    listener.preloader = preloader;
    listener.onLoadStart = function() {
        this.preloader._alpha = 100;
    };
    listener.onLoadInit = function() {
        this.preloader._alpha = 0;
    };
    clipLoader.addListener(listener);
    clipLoader.loadClip(url, container);
}
__________________
hauts.ru

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

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

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


 


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


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