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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.02.2010, 01:26
Ar_PHARAZON вне форума Посмотреть профиль Отправить личное сообщение для Ar_PHARAZON Найти все сообщения от Ar_PHARAZON
  № 1  
Ответить с цитированием
Ar_PHARAZON
[+4 28.02.10]

Регистрация: Feb 2010
Сообщений: 16
По умолчанию Сбой звука

Добрый вечер. Проблемы следующего характера:
1) Подгружаю звук во флешку. Вес мп3-файла приблизительно 60 Мб. Звук запускается, однако, при первом проигрыше, иногда он срывается где-то на 2-3 минуте и перезапускается заново! Такое происходит только один раз (то есть, после перезапуска играет от начала до конца) Вот код (стоит во 2 кадре после прелоадера):
Код AS1/AS2:
stop();
my_sound = new Sound();
my_sound.onLoad = function() {
	my_sound.start();
};
my_sound.loadSound("http://мой_домен/music/mixdown.mp3",true);
С чем может быть связан этот лаг?

2) приблизительно тоже самое происходит и в средине самой флешки, только теперь уже с кадрами! Иногда, флешка сама-по-себе возвращает предыдущий кадр, но ведь в каждом из них стоит stop()! впервые с подобным сталкиваюсь(( Как такое может быть??

3) лаги при движении контейнеров с подгруженными картинками. На компе почти не глючит, а в инете - картинки слегка вздрагивают, когда двигаются. Можно ли что-то сделать?? Код (контейнеров их более 30, я сократил):
Код AS1/AS2:
//1-container
var container_1:MovieClip = _root.anim_pic.cont.createEmptyMovieClip('img', this.getNextHighestDepth());
var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.addListener (this);
 
mcLoader.loadClip('./SlideShow/1.jpg',container_1);
container_1._x = 0;
 
//2-container
var container_2:MovieClip = _root.anim_pic.cont.createEmptyMovieClip('img_2', this.getNextHighestDepth());
var mcLoader2:MovieClipLoader = new MovieClipLoader();
mcLoader2.addListener (this);
 
mcLoader2.loadClip('./SlideShow/2.jpg',container_2);
container_2._x = 713;
 
//3-container
var container_3:MovieClip = _root.anim_pic.cont.createEmptyMovieClip('img_3', this.getNextHighestDepth());
var mcLoader3:MovieClipLoader = new MovieClipLoader();
mcLoader3.addListener (this);
 
////////////
this.onLoadInit = function (mc:MovieClip) {
	_root.anim_pic.gotoAndStop(2);
}
_root.anim_pic.gotoAndStop(2) - здесь задается движение мувика (с уже загруженными контейнерами)

Код AS1/AS2:
var xStart = 840
var xFinish = -20100
var myTime1 = 250
var myTime2 = 1000
import mx.transitions.Tween;
var myTween:Tween = new Tween(_root.anim_pic.cont, "_x", mx.transitions.easing.None.easeNone, xStart, xFinish, myTime1, true);
function myStart() {
	myTween.start();
}
function myFunction() {
	myTween.onMotionFinished = function() {
		_root.gotoAndStop(3);
	};
}
myFunction();

И ВСЕ ЭТО БЕЗОБРАЗИЕ ПРОИСХОДИТ В ОДНОМ ФАЙЛЕ!
Заранее благодарен за внимание!

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
По поводу (1), попробуйте убрать вот эти строки:
Код AS1/AS2:
my_sound.onLoad = function() {
	my_sound.start();
};
В потоковом режиме (параметр true) звук стартуется автоматически, как только в буфер попадет достаточное количество данных. А у вас старт происходит еще раз, дополнительно, уже по факту полной загрузки - отсюда перезапуск.

По поводу (2):
Причина, вероятно, имеет сходные корни. Вот эта строка автоматически стартует анимацию Tween, по факту определения Tween, без участия myTween.start();
Код AS1/AS2:
var myTween:Tween = new Tween(_root.anim_pic.cont, "_x", mx.transitions.easing.None.easeNone, xStart, xFinish, myTime1, true);
Таким образом, строка myTween.start(); повторно стартует анимацию myTween, и myTween.onMotionFinished отрабатывается вторично и происходит _root.gotoAndStop(3);

Далее. У вас получается так, что this.onLoadInit отрабатывает _root.anim_pic.gotoAndStop(2); всякий раз, кода происходит загрузка в контейнер. Вы так задумали?

(3) - возможно проблема в работе самого плеера, с отрисовкой содержимого связано. похожее тут обсуждалось, но универсального рецепта не нашлось.
- попробуйте поварьировать FPS
- при анимации громоздкого содержимого, если оно векторное, имеет смыл его предварительно растеризовать. Готовые алгоритмы и функции растеризации на форуме и в инете есть.

Чисто по записи кода.
При такой записи
Код AS1/AS2:
function myFunction() {
	myTween.onMotionFinished = function() {
		_root.gotoAndStop(3);
	};
}
функция myFunction объявляется перед выполнением кода, но, поскольку на этот момент myTween еще не определен, функция обработки события onMotionFinished остается не определена.
В последствии, конечно, происходит вызов myFunction(); (у вас он идет в конце кода) и myTween уже определен, но последовательность событий получается кривовата, так как обработчик события onMotionFinished назначается в вашем случае уже в процессе анимацмии myTween.
Да и громоздко это.

Поэтому:
Код AS1/AS2:
myTween.onMotionFinished = myFunction;
myFunction();
 
function myFunction() {
	_root.gotoAndStop(3);
}
Вообще, без алгоритмической необходимости не стоит делать вложенное объявление функции (в другой функции). Бывают случаи, конечно, когда оперативное объявление функции является алгоритмически необходимым, например, при оперативных изменениях какой-то общей ситуации, определенных событиях, но это не ваш случай.


Последний раз редактировалось mooncar; 22.02.2010 в 12:25.
Создать новую тему Ответ Часовой пояс GMT +4, время: 21:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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