2016-01-28 4 views
-2

я нашел ниже проблемы в действии сценария 3.Использование сценария действия 3 с Flash Builder 4.7, когда я пытаюсь загрузить изображение размерности 16000 X 16000, не в состоянии загрузить

Использование сценария действия 3 с Flash Builder 4.7, когда я попробуйте загрузить изображение размера 16000 X 16000, используя нижеприведенный код, который будет отображать мое приложение и не сможет показывать изображение.

Размер изображения составляет 4,6 МБ и размер изображения 16000 X 16000 (ширина х высота)

При попытке с другим изображением, имеющим размерности 10000 X 3000 (ширина х высота) он будет работать

var mapLoader:Loader=new Loader(); 
var loaderInfo:LoaderInfo=mapLoader.contentLoaderInfo;  

loaderInfo.addEventListener(Event.COMPLETE, function(event:Event):void 
      { 
      var image:Image=new Image(); 
      image.source=mapLoader.content; 
      image.width=image.source.width * 0.6; 
      image.height=image.source.height * 0.6;    
      image.smooth=true; 
      } 
      }); 
      loaderInfo.addEventListener(IOErrorEvent.IO_ERROR,function(e:IOErrorEvent):void 
      { 
       //some code 
      });   
      mapLoader.load(new URLRequest(mapSrc)); 

Пожалуйста, помогите мне и спасибо заранее

+0

16000 * 16000 * 4 равно 1GB бара ... не удивительно, что сбой ... Если вы используете прокручиваемую карту, которую вы должны сделать через систему на основе плитки. – SushiHangover

+0

@SushiHangover, Спасибо за помощь, я также использую трассировку пути, используя алгоритм astar с этими большими размерными изображениями, будет ли он работать с системой на основе плитки? Не могли бы вы предоставить нам некоторые ссылки, например, как применять систему на основе плитки? –

+0

Там не так много технологий, которые не сбой при попытке загрузить это. Как вы не знали, что это было безумно огромное изображение? Это была очевидная проблема. – BotMaster

ответ

0

Перед Flash Player 11 было ограничение на размер любого загруженного изображения. Начиная с Flash Player 11 это ограничение было удалено, а максимальный размер зависит от операционной системы.

Учитывая, что Flash внутренне обрабатывает изображение в виде растровых изображений, ваше изображение 16000x16000px требует около 1 ГБ ОЗУ. Это может быть больше, чем ваше приложение разрешено (или даже то, на что способна ваша система).

Поскольку вы, кажется, создаете приложение, я бы рекомендовал использовать систему плитки: полная карта сокращается на более мелкие изображения, которые затем размещаются бок о бок. Используя эту систему, ваше приложение может загружать и отображать только нужные фрагменты, сильно сокращая требуемую память, а также необходимую пропускную способность. Если вы не хотите показывать пустые места, пока плитки загружаются, вы можете добавить изображение нижнего уровня полной карты под плитки, чтобы пользователь увидел размытую версию этого раздела до того, как приложение закончило загрузку соответствующей плитки и показать версию высокого уровня.

+0

@ Aralicia, Спасибо за помощь, я также использую трассировку пути, используя алгоритм астара с этими большими размерными изображениями, будет ли он работать с системой на основе плитки для настольных приложений? Не могли бы вы предоставить нам некоторые ссылки, например, как применять систему на основе плитки для настольных приложений? –

+1

Если вы используете алгоритмы поиска пути на своем изображении, вы можете упростить его заранее. например, вы A * перемещаете пиксель карты на пиксель? Если нет, возможно, изображения с низким разрешением могут быть достаточно. alternativaly, вы можете иметь упрощенный файл «псевдо-карты», который не является изображением и может рассматриваться как массив значений. Что такое контекст вашего приложения? – Aralicia

 Смежные вопросы

  • Нет связанных вопросов^_^