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

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

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

Регистрация: Feb 2011
Сообщений: 42
По умолчанию Тормозит анимация при "мультипоточности"

Не придумал, как понятнее назвать тему...
Делаю фотогалерею (Нужен FP 11).
Попробуйте покрутить колесо мыши вниз. Только вниз и только по одному разу: еще не дописал метод с анимацией.
Превьюшки внизу сдвигаются влево, а основная фотка заменяется на следующую.
Проблема в том, что анимация превьюшек тормозит. А происходит это потому, что одновременно с этим заменяется основная фотка - для этого нужно заменить текстуру в Molehill, что занимает время.

К скроллу мыши привязан метод с таким кодом:
Код AS3:
img.source = SHService.imagePaths[displayedIndex];//Грузит фотографию и заменяет текстуру
ts.displayedIndex=displayedIndex;//Запускает анимацию превьюшек
Анимацией занимается TweenMax.
Я надеюсь, эти вещи делаются в разных потоках? Можно ли как-то управлять приоритетом?
Короче говоря, мне надо, чтобы фото грузилось одновременно с анимацией, но анимация не тормозила :]

Надеюсь на вашу помощь, у меня плохие познания флеша) Спасибо.

Старый 04.05.2011, 20:31
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 2  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Во флеше только один поток. Грузите текстуру, как только прогрузилась, двигайте анимацией.
__________________
тут я

Старый 04.05.2011, 20:42
honest_man вне форума Посмотреть профиль Отправить личное сообщение для honest_man Найти все сообщения от honest_man
  № 3  
Ответить с цитированием
honest_man

Регистрация: Aug 2010
Сообщений: 86
Помню и сам расстроился когда узнал что AS однопоточен =(

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

Регистрация: Feb 2011
Сообщений: 42
Я понимаю, что управляемый поток во флеше только один.
Но реально там ведь не может быть одного потока О_о Он ведь может грузить файл из интернета, продолжая выполнять метод, например. И анимация нескольких объектов разве может выпоняться при одном потоке?
А как тогда работает мой код? Он же действительно производит анимацию одновременно с загрузкой фотографии.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Твины отрабатывают по Event.ENTER_FRAME или по таймеру
__________________
...вселенская грусть

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

Регистрация: Feb 2011
Сообщений: 42
Это понятно, но не может происходить одновременно твин с загрузкой фотки в одном потоке.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
но не может происходить одновременно твин с загрузкой фотки в одном потоке
То есть, Вас не устраивает такой вариант? или Вы не верите, что это так? =)
Когда происходит dispatchEvent, событийный объект попадает в некоторую очередь в недрах плеера. Основной поток плеера проходит эту очередь и выполняет связанный с ней код. Равно как и не связанный. Строго по одному.
- Что у нас там в задачах - ага, скопировать кусок памяти отсюда до сюда. ок, копируем
- Что еще осталось? ага, покрутить прелоадер. Ну и твин заодно проапдейтим
__________________
...вселенская грусть

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

Регистрация: Feb 2011
Сообщений: 42
Не понимаю...вот допустим, работает в коде некий цикл. И диспатчится какой-нибудь ENTER_FRAME.
Уже не понятно, кто будет производить dispatchEvent, если поток занят циклом. А потом этот поток прекратит выполнять цикл и покрутит прелоадер?
Это похоже на некую "эмуляцию" многопоточности. Не буду просить лекций по этой теме Я нашел кое-какой материал, но сложновато для меня.

Как тогда GC работает, тоже не понятно.
Еще, скажем, во встроенной анимации во Flex можно задать свойство suspendBackgroundProcessing, чтобы анимация была более гладкой. И всё в одном потоке?..


Последний раз редактировалось Sharkow; 04.05.2011 в 22:52.
Старый 04.05.2011, 23:40
honest_man вне форума Посмотреть профиль Отправить личное сообщение для honest_man Найти все сообщения от honest_man
  № 9  
Ответить с цитированием
honest_man

Регистрация: Aug 2010
Сообщений: 86
Цитата:
И всё в одном потоке?
Да. Код выполняется строго по очереди. К чему это отрицание?

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

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Человек видимо не верит, что современный процессор настолько быстро работает, и что в одном потоке можно столько всего сделать.

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

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

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


 


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


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