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

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

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

Регистрация: Dec 2013
Сообщений: 13
Question Как зациклить сценарий

Не получается зациклить воспроизведение панорам.
Вообще останавливается после одного раза проигрывания
Что делаю не так?
Код AS3:
import flash.display.Bitmap; 
import flash.display.BitmapData;
import flash.events.Event;
import flash.display.Loader;
import flash.events.TimerEvent; 
import flash.utils.Timer; 
 
var n_img:Array = ["img/0_1.jpg", "img/0_2.jpg", "img/0_3.jpg", "img/0_4.jpg", "img/0_5.jpg", "img/0_6.jpg", "img/0_7.jpg", "img/0_8.jpg", "img/0_9.jpg", "img/0_10.jpg", "img/0_11.jpg", "img/0_12.jpg", "img/0_13.jpg", "img/0_14.jpg", "img/0_15.jpg"]; 
 
var ldr:Loader = new Loader();
var myBitmap:Bitmap = new Bitmap;
 
//var minuteTimer:Timer = new Timer(50, 50);
var minuteTimer:Timer = new Timer(50, 2400);
 
 
for (var nn=0; nn<=15; ) {
 
ldr.load(new URLRequest(n_img[nn]));
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);
 
function ldr_complete(event:Event):void {
	myBitmap = new Bitmap( (ldr.content as Bitmap).bitmapData );
	addChild(myBitmap); 
}
minuteTimer.addEventListener(TimerEvent.TIMER, onTick); 
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
minuteTimer.start();
 
function onTick(event:TimerEvent):void  
{
	myBitmap.bitmapData.scroll(-1,0);
}
function onTimerComplete(event:TimerEvent):void 
{ 
	trace("Time's Up!");
	removeChild(myBitmap);
	trace(minuteTimer.currentCount);
	minuteTimer.reset();
	minuteTimer.removeEventListener(TimerEvent.TIMER, onTick);
	minuteTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
	minuteTimer.stop();
	ldr.contentLoaderInfo.removeEventListener(Event.COMPLETE, ldr_complete);
	nn++;
}
}
Спасите.помогите.самимыбезрукие()

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

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
ну так протрейсите, на каком этапе перестает работать, грузится ли вторая панорама? Запускается ли второй раз таймер,
ну и вообще по идее так должно быть

Код AS3:
function ldr_complete(event:Event):void {
	myBitmap = new Bitmap( (ldr.content as Bitmap).bitmapData );
	addChild(myBitmap); 
minuteTimer.addEventListener(TimerEvent.TIMER, onTick); 
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
minuteTimer.start();
}
не забывайте что нужно ждать загрузки с сервера, а потом только начинать проигрывать,
и вообще это нужно делать не циклом а рекурсией, в которую передавать путь к файлу

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Вешать в цикле тучу обработчиков комплита на лоадер, да еще хендлером указать вложенную в цикл же функцию -за это уже можно руки оборвать. Вот вам ктото их и оборвал, по-видимому. Потом, что вы хотите-то? Вы по таймеру скролите непонятно что все время -1. Что у вас должно по-новой проигрываться? Уехало все, что можно, потом удалили все. Откуда второму и последующему проигрыванию взяться?
Совсем безруким рекомендуется понатыкать трейсов побольше на разные переменные и потом неимоверным усилим ума понять, что же у вас происходит, собственно, и происходит ли вообще? Не пробовали? Попробуйте, это весело.
О, пардон, там не только хендлеры вложены в цикл, там вообще все плохо. И таймер стартует в цикле и вообще все....

Старый 17.03.2014, 16:46
cvasy вне форума Посмотреть профиль Отправить личное сообщение для cvasy Найти все сообщения от cvasy
  № 4  
Ответить с цитированием
cvasy

Регистрация: Dec 2013
Сообщений: 13
Цитата:
Сообщение от Isfet Посмотреть сообщение
ну так протрейсите, на каком этапе перестает работать, грузится ли вторая панорама? Запускается ли второй раз таймер,
ну и вообще по идее так должно быть

Код AS3:
function ldr_complete(event:Event):void {
	myBitmap = new Bitmap( (ldr.content as Bitmap).bitmapData );
	addChild(myBitmap); 
minuteTimer.addEventListener(TimerEvent.TIMER, onTick); 
minuteTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete); 
minuteTimer.start();
}
не забывайте что нужно ждать загрузки с сервера, а потом только начинать проигрывать,
и вообще это нужно делать не циклом а рекурсией, в которую передавать путь к файлу
вторая картинка не грузится и двигается соответсвенно

Добавлено через 1 минуту
Цитата:
Сообщение от alexcon314 Посмотреть сообщение
Вешать в цикле тучу обработчиков комплита на лоадер, да еще хендлером указать вложенную в цикл же функцию -за это уже можно руки оборвать. Вот вам ктото их и оборвал, по-видимому. Потом, что вы хотите-то? Вы по таймеру скролите непонятно что все время -1. Что у вас должно по-новой проигрываться? Уехало все, что можно, потом удалили все. Откуда второму и последующему проигрыванию взяться?
Совсем безруким рекомендуется понатыкать трейсов побольше на разные переменные и потом неимоверным усилим ума понять, что же у вас происходит, собственно, и происходит ли вообще? Не пробовали? Попробуйте, это весело.
О, пардон, там не только хендлеры вложены в цикл, там вообще все плохо. И таймер стартует в цикле и вообще все....
Да, критика принята. Руки оторваны...
помогите исправить!

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

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Попробуйте для начала загрузить все изображения, добавить их в массив и убедитесь, что все загружено и отображается и позиционируется. Крутить имеет смысл только после этого. Не валите все в одну кучу-цикл. Приведите этот код загрузки, если не будет получаться, дальше посмотрим. Не нужно пока таймеров и скролов, Просто загрузка, подготовительный этап всех дальнейших действий. Начальных знаний для этого у вас должно хватить. Даже на основе вашего кода. Поиск по форуму "загрузка изображений", картинок, галереи в помощь.
Что за потребительское отношение к форуму? Работайте и будет счастье. И хватит твердить по руки и "помогите". Если же у вас их действительно нет - обратитесь в вакансии.
Впрочем, я не настаиваю. Может сидеть и ждать еще неделю.

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

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

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


 


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


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