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

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

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

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
По умолчанию Координаты внутри мувиклипа и Loader

Привет!
Сабж: загружаю картинку как обычно помощью лоадера и urlrequest:
Код AS3:
var request:URLRequest = new URLRequest("image.png");  
var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);  
function loadComplete(event:Event):void {  
myMC.addChild(loader);
}  
loader.load(request);
Загрузка завершается без ошибок все хорошо, но картинки не видно. Смена иерархии помогла
Код AS3:
stage.addChild(loader);
-картинка видна, что доказало правильность работы кода лоадера. В общем кое как я нашел что в первом случае картинка загрузилась и встала в глобальные координаты ролика(это более 4000 пикселей, поэтому ее не было видно на экране). Вопрос почему так происходит и как устанавливать позицию загруженного лодера в локальные координаты(0,0) без учета глобальных?
Спасибо!
__________________
uglan

Старый 27.11.2012, 18:47
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Координаты экранного объекта (DisplayObject), отсчитываются от нулевых координат контейнера, в котором в данный момент находится объект. Вот например описание поля x класса DisplayObject:
Цитата:
Указывает координату x экземпляра DisplayObject, связанную с локальными координатами родительского DisplayObjectContainer. Если объект включен в DisplayObjectContainer с преобразованиями, то он находится в локальной системе координат содержащего его DisplayObjectContainer. Таким образом, если объект DisplayObjectContainer повернут на 90° против часовой стрелки, дочерние элементы наследуют систему координат с поворотом на 90° против часовой стрелки. Координаты объекта определяются относительно положения точки регистрации.
Разобраться с переходом из глобальных координат в локальные и обратно вам помогут функции localToGlobal() и globalToLocal().

Старый 27.11.2012, 19:06
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 3  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Код AS3:
var request:URLRequest = new URLRequest("image.png"); 
var imgLoader:Loader = new Loader();
imgLoader.load(request);
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgLoaded);
 
private function imgLoaded(e:Event):void {
			e.currentTarget.removeEventListener(Event.COMPLETE, imgLoaded);
 
			var img:Bitmap = e.currentTarget.content as Bitmap;
			myMC.addChild(img);
		}

Старый 27.11.2012, 23:07
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 4  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от uglan Посмотреть сообщение
В общем кое как я нашел что в первом случае картинка загрузилась и встала в глобальные координаты ролика(это более 4000 пикселей, поэтому ее не было видно на экране). Вопрос почему так происходит и как устанавливать позицию загруженного лодера в локальные координаты(0,0) без учета глобальных?
Спасибо!
Привет! Скорее всего все с точностью до наоборот. Глобальными координатами называется система отсчета самого верхнего уровня DisplayList -- Stage. Все остальные DisplayObjectContainers обладают своими, "локальными" системами отсчета. Т.е. в первом случае вы добавили картинку в myMC, в его локальную координату (0, 0). Сам же myMC находился в качестве ребенка у Stage, в его координате, предположим, (4000, 4000), поэтому его и картинки не было видно на экране. Чтобы установить глобальную координату (0, 0), необходимо пересчитать ее из локальной в глобальную с помощью метода DisplayObject#localToGlobal(), как указал комрад bav.

Пост размещен в целях повышения кармы.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 27.11.2012, 23:56
uglan вне форума Посмотреть профиль Отправить личное сообщение для uglan Посетить домашнюю страницу uglan Найти все сообщения от uglan
  № 5  
Ответить с цитированием
uglan

Регистрация: Mar 2003
Адрес: moscow
Сообщений: 102
Отправить сообщение для uglan с помощью ICQ Отправить сообщение для uglan с помощью Skype™
Всем большое спасибо за ответы! Я нашел причину! И теперь понял что я нечаянно повел вас не по тому пути Я не обратил ваше внимание на довольно важную вещь, картинка была не одна а несколько и они создавались в цикле, но слушатели ловили события загрузки естественно позже при этом добавляя загруженную картинку только последнему элементу-контейнеру в цикле(который за пределами экрана на координатах 4000пкс и поэтому не было видно картинки у первого контейнера). Так что ошибка была не в назначении координат а намного банальнее Решается она непосредственным добавлением лоадера сразу после его назначения в цикле.
Код AS3:
var imgLoader:Loader = new Loader();
myMC.addChild(imgLoader);
Еще раз спасибо за сведения по localToGlobal/globalToLocal и преобразованию лоадера в битмапу тоже.
__________________
uglan

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

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

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


 


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


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