Показать сообщение отдельно
Старый 04.10.2010, 17:58
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 1  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
По умолчанию UILoader и кириллица: ошибка при загрузке.

Добрый день, господа флешеры, надеюсь на вашу помощь.

В чем проблема:
Как можно понять по названию темы, когда я использую для указания пути загрузки кириллицу, возникает ошибка, которая слегка ставит меня в ступор.

Вот класс, в котором все происходит:

Код AS3:
package src.UI {
	import fl.containers.UILoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.events.ProgressEvent;
	import flash.events.SecurityErrorEvent;
 
	public class Book extends EventDispatcher{
		public var pages : Vector.<UILoader>;
		public var name  : String;
 
		private var totalPages : int;
		private var loadedPages : int;
 
		public function Book(_name : String, _sourcePath : String, _totalPages: int){
		  var urlRequest : URLRequest;
			var newPage    : UILoader;
 
			pages = new Vector.<UILoader>();
			totalPages = _totalPages;
			name = _name;
			for(var i : int = 1; i <= totalPages; i++){
				urlRequest = new URLRequest(_sourcePath + "page" + i.toString() + ".swf");
			  newPage    = new UILoader();
			  newPage.addEventListener(IOErrorEvent.IO_ERROR, IOErrorHandler);
				newPage.addEventListener(ProgressEvent.PROGRESS, progressHandler);
				newPage.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
				newPage.addEventListener(Event.OPEN, openHandler);
				newPage.autoLoad = false;
				newPage.source   =  urlRequest.url;
				pages.push(newPage);
			}
		  trace("totalPages = " + totalPages + " sourcePath " + _sourcePath);
		}
 
		/// methods
 
		public function load():void{
		 	pages[0].addEventListener(Event.COMPLETE, loadCompleteHandler);
			pages[0].load();
		}
 
		/// private functions
 
		private function loadCompleteHandler(event : Event):void{
		  trace(event);
			event.currentTarget.removeEventListener(Event.COMPLETE, loadCompleteHandler);
			loadedPages++;
			if(loadedPages == totalPages){
			  dispatchEvent(new Event(Event.COMPLETE));
			} else {
				pages[loadedPages].addEventListener(Event.COMPLETE, loadCompleteHandler);
			  pages[loadedPages].load();
			}
		}
 
		private function progressHandler(event : ProgressEvent):void{
			trace(event);
		}
 
		private function IOErrorHandler(event : IOErrorEvent):void{
			trace(event);
		}
 
		private function openHandler(event : Event):void{
		  trace(event);
		}
 
		private function securityErrorHandler(event :SecurityErrorEvent):void{
		  trace(event);
		}
	}
}
Когда в пути нет русских букв все отлично работает, но когда они есть выскакивает, например, такая ошибка:

Error opening URL 'http://127.0.0.1/denwer/pdfreader/users/chuwy/convertedBooks/Контрольные задания(2)/page1.swf'
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2036: Загрузка не завершена. URL: http://127.0.0.1/denwer/pdfreader/us...ks/Контрольные задания(2)/page1.swf"]

Но ей предшествует вывод:

[ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=0 bytesTotal=2112]
[ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=798 bytesTotal=2112]
[ProgressEvent type="progress" bubbles=false cancelable=false eventPhase=2 bytesLoaded=2112 bytesTotal=2112]

Что говорит о том, что грузиться то все-таки файл грузится.
Я могу, конечно, обойтись без кириллицы, транслитилируя пути, но очень интересно почему такое происходит.
Подскажите пожалуйста, что я делаю не так.


Последний раз редактировалось ChuwY; 04.10.2010 в 18:01.