ActionScript 3.0 Получение размера / координат из содержимого загрузчика - PullRequest
0 голосов
/ 23 марта 2010

Я пытаюсь расположить текстовое поле слева внизу от изображения, которое добавляется в список отображения из класса Loader ().я не знаю, как получить доступ к информации о ширине / высоте изображения.

var dragSprite:Sprite = new Sprite();
this.addChild(dragSprite);

var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest("picture.jpg"));
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, displayPic, false, 0, true);

function displayPic(evt:Event):void
    {
    dragSprite.addChild(evt.target.content);
    evt.target.removeEventListener(Event.COMPLETE, displayPic);
    }

var tf:TextField = new TextField();
tf.text = "Picture Title";
tf.width = 200;
tf.height = 14;
tf.x //same x coordinate of dragSprite
tf.y //same y coordinate of dragSprite, plus picture height, plus gap between picture and text

addChild(tf);

в функции displayPic, я могу назначить evt.target.content.height и evt.target.content.widthпеременным, которые я мог бы использовать для позиционирования текстового поля, но я предполагаю, что есть более подходящий и прямой путь?

1 Ответ

1 голос
/ 23 марта 2010

Прямого пути нет, так как вам нужно дождаться загрузки изображения для доступа к width и height.

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

//...
var tf:TextField = new TextField();
tf.text = "Picture Title";
tf.width = 200;
tf.height = 14;

addChild(tf);

var imageLoader:Loader = new Loader();
imageLoader.load(new URLRequest("picture.jpg"));
imageLoader.contentLoaderInfo.addEventListener(
     Event.COMPLETE, displayPic, false, 0, true
);

var offsetX:Number=0;
var offsetY:Number=0;

function positionText():void {
  tf.x=dragSprite.x + offsetX;
  tf.y=dragSprite.y + offsetY;
}

function displayPic(evt:Event):void {
 var li:LoaderInfo=evt.target as LoaderInfo;

 if (li===null)
    return;

 li.removeEventListener(Event.COMPLETE, displayPic);

 var dob:DisplayObject=li.content;
 if (dob!==null) {
  dragSprite.addChild(dob);

  // set only once the offset depending on the loaded image
  offsetX = ...//
  offsetY = dob.height+gap //...

  // position text using the offset setted
  // so you can reuse the function when moving your sprite
  positionText();
 }
}
...