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

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

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

Регистрация: Aug 2008
Сообщений: 3
По умолчанию Проблема с Timer

Возникла странная проблема,

у меня есть таймер:
Код:
this.myTimer = new Timer(50, 0); 
this.myTimer.addEventListener("timer", mainLooping);
this.myTimer.start();
если запускать swf в Flash Player 9, то все работает нормально. Если я пытаюсь открыть в браузере - при движении мыши таймер останавливается, когда останавливаю мышь, таймер снова идет. То же самое при попытке просмотра через Media Player Classic.

Никаких EventListener`ов на движение мыши не стоит.

Никто не подскажет с чего вдруг такая странность?
Проверял и в IE и Firefox

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

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Очень странная проблема. Исходник можете показать?
__________________
4am is time to rock

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

Регистрация: Aug 2008
Сообщений: 3
В общем, это все, что имеет к этому какое-либо отношение. все остальное - работа с элементами, генерация клипов.
Код:
package {
	
	import flash.display.MovieClip;
	import Building;
	import Soldier;
	import Tank;
	import flash.utils.Timer;      
   	import flash.events.TimerEvent;
	import flash.display.Sprite;
	import flash.display.Shape;
		
	public class Renderer extends MovieClip {

		public var myTimer:Timer;
		public var id_array:Array;
		/*

		.....

		*/
		
		public function Renderer() {

				
			this.myTimer = new Timer(50, 0); 
			this.myTimer.addEventListener("timer", mainLooping);
			this.myTimer.start();
		}
		public function mainLooping(evtent:TimerEvent) {
			
			/* ... */

			this.moves();

			/* ... */

		}
		// Упрощенно... но проблема сохраняется
		public function moves() {
	                //id_array - массив с элементами, которые двигать надо. В даном случае я просто для теста двигаю только первый
			this.id_array[0].x++;
			this.id_array[0].y++;
		}
	}
}
основной код..
Код:
/*...............*/
var mainLoop:Renderer = new Renderer();
gameNode.addChild(mainLoop);
/*...............*/
Стоит отметить, что идет работа с >4000 элементами, но основная после загрузки операции производятся только с 5-6 элементами

EDITED: немного разобрался. При отключении этих самых 4000 элементов все работает хорошо. Существует ли какое-то ограничение в браузерах на нагрузку?


Последний раз редактировалось Nolixe; 30.08.2008 в 21:36.
Старый 30.08.2008, 21:49
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 4  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Мне кажется, что плагин к браузеру просто не справляется, ибо в основном работает медленнее, чем приложение flash player.
Может попробовать хранить элементы не в массиве, а как отображаемые элементы и получать доступ к ним через getChildAt(index)?
И еще, киньте код цикла из метода moves(). Может Вы там используете что-то типа for (var i:Number = 0; i < this.id_array.length, i++)?

Старый 31.08.2008, 00:49
Nolixe вне форума Посмотреть профиль Отправить личное сообщение для Nolixe Найти все сообщения от Nolixe
  № 5  
Ответить с цитированием
Nolixe

Регистрация: Aug 2008
Сообщений: 3
да нет, я специально упростил, чтобы понять в чем проблема. Подобная проблема возникает даже при том moves, который я написал выше.

Мне в принципе плагин и не нужен бы был, если бы можно было заставить флэш понимать правый клик без javascript'а

Чем, кстати for (var i:Number = 0; i < this.id_array.length, i++) плохое?

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

Регистрация: Jul 2007
Сообщений: 805
Отправить сообщение для ramshteks с помощью ICQ Отправить сообщение для ramshteks с помощью Skype™
ооооооооочень медленное

Старый 31.08.2008, 07:08
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 7  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Цитата:
Сообщение от Nolixe Посмотреть сообщение
Чем, кстати for (var i:Number = 0; i < this.id_array.length, i++) плохое?
Хотя бы тогда так:
Код:
var count:uint = this.id_array.length;
for (var i:Number = 0; i < count, i++) {...}

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

Регистрация: Oct 2006
Адрес: simferopol -> kyiv
Сообщений: 2,161
Отправить сообщение для Fernando Costa с помощью ICQ
Цитата:
Сообщение от enepx Посмотреть сообщение
Хотя бы тогда так:
Код:
var count:uint = this.id_array.length;
for (var i:Number = 0; i < count, i++) {...}
Код:
var count:uint = this.id_array.length;
for (var i:int= 0; i < count, i++) {...}
__________________
: M F N W :

Старый 31.08.2008, 15:50
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 9  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Цитата:
Сообщение от Fernando Costa Посмотреть сообщение
Код:
var count:uint = this.id_array.length;
for (var i:int= 0; i < count, i++) {...}
нее..
вроде Number в данном случае быстрее работает.

Старый 31.08.2008, 16:14
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 10  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
enepx, с чего бы?

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

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

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


 


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


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