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

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

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

Регистрация: Jun 2012
Сообщений: 142
По умолчанию Прелоадер виснет

Взял у когото готовый прелоадер, но он почемуто подвисает, показывает 10-20% потом виснет, жмем ф5 в браузере дальше показывает 30-40 и тд, до полной загрузки.
Подскажите что не так в прелоадере:
Код AS3:
package 
{
	import flash.display.DisplayObject;
	import flash.display.MovieClip;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.utils.getDefinitionByName;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize; 
    import flash.display.LoaderInfo;
		import flash.text.TextFormat;
    import flash.text.TextFieldType;
 
	  [SWF(width = "1280", height = "1024", frameRate = "24", backgroundColor = "#FFFFFF")]
 
	public class Preloader extends MovieClip 
	{
 
     private var preloader_text:TextField;
     private var swf_w:int=1280;
     private var swf_h:int=1024;
	private var newFormat:TextFormat = new TextFormat();
 
		public function Preloader() 
		{
			if (stage) {
				stage.scaleMode = StageScaleMode.NO_SCALE;
				stage.align = StageAlign.TOP_LEFT;
			}
			addEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);
 
			// Show loader
            preloader_text=new TextField();
            preloader_text.text="Загрузка: 0 % ";
            preloader_text.textColor=0x000000;
            preloader_text.selectable=false;
            preloader_text.autoSize=TextFieldAutoSize.CENTER;
            preloader_text.x=swf_w/2-preloader_text.width/2;
            preloader_text.y=swf_h/2;
            addChild(preloader_text);
		}
 
		private function ioError(e:IOErrorEvent):void 
		{
			trace(e.text);
		}
 
		private function progress(e:ProgressEvent):void 
		{
			// Update loader
			newFormat.size = 34; newFormat.bold = 1;
 
			preloader_text.text = "Загрузка: " + (Math.round((loaderInfo.bytesLoaded * 100) / loaderInfo.bytesTotal)) + " %";
			preloader_text.setTextFormat(newFormat);
		}
 
		private function checkFrame(e:Event):void 
		{
			if (currentFrame == totalFrames) 
			{
				stop();
				loadingFinished();
			}
		}
 
		private function loadingFinished():void 
		{
			removeEventListener(Event.ENTER_FRAME, checkFrame);
			loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
			loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);
 
			// Hide loader
			preloader_text.visible=false;
 
			startup();
		}
 
		private function startup():void 
		{
			var mainClass:Class = getDefinitionByName("Main") as Class;
			if (parent == stage) stage.addChildAt(new mainClass() as DisplayObject, 0);
			else addChildAt(new mainClass() as DisplayObject, 0);
		}
 
	}
 
}
Добавлено через 25 минут
И еще он режет основной сцф до 800 по вертикали. Как это убрать?

Добавлено через 34 минуты
с резалкой до 800 разобрался, мой косяк в хтмле, прелоадер все еще виснет(

Старый 28.10.2012, 20:03
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 2  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Пальцем в небо - почему-то проверяется закончилась ли загрузка не по тому, загрузился ли файл, а проигралась ли какая-то анимация до конца (в функции checkFrame). Может кадров мало и он преждевременно вызывает loadingFinished ? Попробуйте подписаться на событие complete вашего LoaderInfo, и там вызвать loadingFinished.

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

Регистрация: Jun 2012
Сообщений: 142
сделал, не помогло...
Но тут выяснил интересный факт, на медленном инете прелоадер не виснет..потихоньку тикает и тикает до упора.
На быстром, виснет 100%
мб это не прелоадера глюк?

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

Регистрация: Apr 2007
Сообщений: 1,369
Чую, анимация у Вас на таймлайне покоится, не к добру это. Убрать стоит её и не расчитывать на неё, а работать лишь с bytesLoaded и bytesTotal. Тогда анимацию запустить надобно.
__________________
john

Старый 29.10.2012, 20:57
fduch вне форума Посмотреть профиль Отправить личное сообщение для fduch Найти все сообщения от fduch
  № 5  
Ответить с цитированием
fduch

Регистрация: Jun 2012
Сообщений: 142
нет, не от скорости зависит..
Потестил на 4х комах на 2х виснет на 2х нет)
на каждом тестил 2мя браузерами мозилой и ие, либо в обоих виснет либо в обоих пашет.
Понятно, что уже оффтоп, мож кто в курсе что может быть за трабла?

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

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

Старый 30.10.2012, 09:22
Frost47rus вне форума Посмотреть профиль Отправить личное сообщение для Frost47rus Найти все сообщения от Frost47rus
  № 7  
Ответить с цитированием
Frost47rus
[+4 08.09.13]

Регистрация: May 2012
Сообщений: 131
обычно так делается:
Код AS3:
var mainClass:Class = getDefinitionByName("ru.domain.project.Main") as Class;
addChild(new mainClass() as DisplayObject);
а в главном классе

Код AS3:
[Frame(factoryClass="PreloaderClass")]
почему вы решили что ошибка именно в прелоадере?
дебаг стопы хоть запускали?

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

Регистрация: Jun 2012
Сообщений: 142
Цитата:
Сообщение от Hauts Посмотреть сообщение
Сравните версии фп на компьютерах, на которых тестируете.
что такое фп??

Операционка на всех одна, браузеры и их версии тоже идентичны.
Вин 7 мах сп1
ФайрФох 16.0.2
Гугл хром 22.0.1229.96
файрвол+антивирь тож везде один))

Добавлено через 48 минут
Цитата:
Сообщение от Frost47rus Посмотреть сообщение
почему вы решили что ошибка именно в прелоадере?
дебаг стопы хоть запускали?
я ж уже написал, что не в нем проблема.

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

Регистрация: Apr 2007
Сообщений: 1,369
Попробуйте убрать
Код AS3:
addEventListener(Event.ENTER_FRAME, checkFrame);
с конструктора и вставить это в ф-цию loadingCompleteHandler, где
Код AS3:
loaderInfo.addEventListener(Event.COMPLETE, this.loadingCompleteHandler);
__________________
john

Старый 31.10.2012, 20:27
fduch вне форума Посмотреть профиль Отправить личное сообщение для fduch Найти все сообщения от fduch
  № 10  
Ответить с цитированием
fduch

Регистрация: Jun 2012
Сообщений: 142
Цитата:
Сообщение от Molecula Посмотреть сообщение
Попробуйте убрать
Код AS3:
addEventListener(Event.ENTER_FRAME, checkFrame);
с конструктора и вставить это в ф-цию loadingCompleteHandler, где
Код AS3:
loaderInfo.addEventListener(Event.COMPLETE, this.loadingCompleteHandler);
Попробовал, условие Комплит не отрабатывает.(без нескольких рефрешей)

Добавлено через 2 минуты
Цитата:
Сообщение от Hauts Посмотреть сообщение
Сравните версии фп на компьютерах, на которых тестируете.
ФлэшПлееры везде одинаковые, последнее обновление

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

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

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


 


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


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