Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с добавлением Bitmap на сцену (http://www.flasher.ru/forum/showthread.php?t=144550)

OnEg1n 14.09.2010 23:35

Проблема с добавлением Bitmap на сцену
 
Доброго времени суток!
Помогите понять, что я делаю не так. В экземпляр класса Loader загружаю jpeg. Вещаю на него событие Event.COMPLITE, чтобы по окончании загрузки jpeg добавился на сцену. Код ниже

Код AS3:

 
package
{
        import flash.display.Bitmap;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.net.URLRequest;
 
        public class  BitmapExample extends Sprite
        {               
                public var bitmapData: BitmapData;
                public var bitmap: Bitmap;
                private var _loader: Loader;
 
                public function BitmapExample()
                {
                        //Создаем битмапу
                        loader("image\44442.jpg");
                }
 
                public function loader(content: String):void
                {
                        _loader = new Loader;
                        _loader.contentLoaderInfo.addEventListener(Event.COMPLETE, compliteEventListener);
                        _loader.load(new URLRequest(content));
                }
 
                public function compliteEventListener(e:Event):void
                {
                        bitmap = new Bitmap(e.target.content);
                        addChild(bitmap);                       
                }
        }
}

Однако изображение не появляется.

t4arty 15.09.2010 00:51

у лоудера есть метод loadbytes, копайте в этом направлении.

samana 15.09.2010 00:58

Закапывайте обратно )
Код:

bitmap = new Bitmap(e.target.content.bitmapData);

Psycho Tiger 15.09.2010 01:27

Код AS3:

addChild((e.target as Loader).content);


OnEg1n 15.09.2010 23:19

Уважаемые Samana и Psycho Tiger, пробывал Ваши способы не работает. Все равно битмапка не появляется на сцену

mikhailk 15.09.2010 23:43

Давайте начнем с начала.
Пример из хэлпа удалось запустить?
http://help.adobe.com/ru_RU/AS3LCR/F...ay/Loader.html

Там внизу как раз загрузка изображения.

Добавлю от себя - тащить загруженное изображение в битмапу нужно только для его обработки. Чтобы просто загрузить и показать изображение битмапа не нужна.

Zebestov 15.09.2010 23:47

картинка тут
Код AS3:

(e.target as LoaderInfo).loader.content


samana 16.09.2010 00:27

А вы добавляете класс BitmapExample на сцену?

OnEg1n 16.09.2010 02:21

samana, нет, не добавляю.
mikhailk, я хочу загрузить растр из вне и после этого работать с ним. Сейчас же я хочу просто посмотреть механизм работы. Но пока не получается

ExtendedPlay 16.09.2010 02:43

Цитата:

bitmap = new Bitmap(e.target.content);
уберите new

e.target.content - это DisplayObject.
Bitmap не принимает в качестве параметра DisplayObject.
Зато вы можете просто преобразовать DisplayObject в Bitmap:
Цитата:

bitmap = Bitmap(e.target.content);
либо так:
Цитата:

bitmap = e.target.content as Bitmap;
если картинка всё равно не появляется на сцене, проверьте правильность введённого адреса и имеется ли доступ к данному файлу)
попробуйте, например, загрузить логотип гугла: http://www.google.ru/intl/en_com/images/srpr/logo1w.png
http://www.google.ru/intl/en_com/images/srpr/logo1w.png

mikhailk 16.09.2010 11:41

Цитата:

Сообщение от OnEg1n (Сообщение 936269)
samana, нет, не добавляю.
mikhailk, я хочу загрузить растр из вне и после этого работать с ним. Сейчас же я хочу просто посмотреть механизм работы. Но пока не получается

ок, вот кусок рабочего кода установки фото пользователя (с установкой в мувиклип photoBox на сцене под квадратную маску 100х100):

Код AS3:

 
private var loader:Loader;
 
private function setUserPhoto(userPhotoURL:String) : void
{
  if (userPhoto != '') {
      loader = new Loader();
      loader.load(new URLRequest(userPhoto), new LoaderContext(true));       
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, userPhotoLoaded);
  }
}       
 
private function userPhotoLoaded(e:Event) : void
{
  var userPhotoBitmap:Bitmap = Bitmap(loader.content);
  userPhotoBitmap.smoothing = true;
 
  // Вписываем в прямоугольник 100 х 100
  if (userPhotoBitmap.width > userPhotoBitmap.height)                // горизонтальное фото
  {
      var coefficient:Number = 100 / userPhotoBitmap.height;
      userPhotoBitmap.height = 100;
      userPhotoBitmap.width = userPhotoBitmap.width * coefficient;
      // Смещение влево, если ширина больше
      if (userPhotoBitmap.width > 100)
      {
          userPhotoBitmap.x = - (userPhotoBitmap.width - 100) / 2;
      }
  }
  else
  {
      coefficient = 100 / userPhotoBitmap.width;
      userPhotoBitmap.width = 100;
      userPhotoBitmap.height = userPhotoBitmap.height * coefficient;                               
    }
 
    photoBox.underMask.addChild(userPhotoBitmap);
}


OnEg1n 18.09.2010 02:10

Все оказалось очень бонально. Надо было написать не

Код AS3:

_loader.load( new URLRequest("image \ 44442.jpg"));

а

Код AS3:

_loader.load( new URLRequest("image / 44442.jpg"));

Да, я когда это понял захотелось стукнуть себя чем-нить потяжелее :confused:
А теперь такой вопрос к ExtendedPlay, да и вообще ко всем господам флешерам. Я когда пытаюсь загрузить лого гугла, по ссылки, которую Вы мне дали. Плеер показывает сообщение, о том что приложение хочет загрузить что-то извне и блокирует загрузку. Что-бы это могло означать и как с этим теперь бороться?

mikhailk 18.09.2010 12:17

Ошибка безопасности
Впрочем, при запуске из под IDE этих проблем быть не должно

а вообще решается настройкой кроссдоменника на отдающем сервере (crossdomain.xml) и указанием контекста загрузки:

Код AS3:

loader.load(new URLRequest(userPhoto), new LoaderContext(true));


OnEg1n 18.09.2010 16:55

Только почему-то у меня Flash IDE открывает, а FD нет.


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

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