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

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

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

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
По умолчанию Указание центра объекта

Загружаю изображение:
Код AS3:
var pic:Loader = new Loader();
pic.load(new URLRequest("1.jpg"));
addChild(pic);
Далее использую его в своих целей.
Возник вопрос. Как для pic указать его центр?
Просто если, например, вращать его без указания центра, то он будет вращаться по относительным к pic координатам 0 и 0, а нужно width / 2, height / 2
__________________
Рожденный ползать, везде пролезет...

Старый 05.10.2009, 19:44
cybercub вне форума Посмотреть профиль Отправить личное сообщение для cybercub Найти все сообщения от cybercub
  № 2  
Ответить с цитированием
cybercub

Регистрация: Nov 2005
Сообщений: 34
можно в контейнер засунуть а там уже отпозиционировать после загрузки в
-width / 2, -height / 2

Старый 05.10.2009, 19:46
Neirol вне форума Посмотреть профиль Отправить личное сообщение для Neirol Посетить домашнюю страницу Neirol Найти все сообщения от Neirol
  № 3  
Ответить с цитированием
Neirol
 
Аватар для Neirol

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
А нет мануальчика по контейнерам?
__________________
Рожденный ползать, везде пролезет...

Старый 05.10.2009, 19:54
cybercub вне форума Посмотреть профиль Отправить личное сообщение для cybercub Найти все сообщения от cybercub
  № 4  
Ответить с цитированием
cybercub

Регистрация: Nov 2005
Сообщений: 34
Код AS3:
container = new Sprite();
addChild(container);
 
var pic:Loader = new Loader();
pic.load(new URLRequest("1.jpg"));
pic.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadImageComplete);
conteiner.addChild(pic);
 
private function onLoadImageComplete(event:Event):void {
	//позиционирование -width / 2, -height / 2
}

Старый 05.10.2009, 19:55
Neirol вне форума Посмотреть профиль Отправить личное сообщение для Neirol Посетить домашнюю страницу Neirol Найти все сообщения от Neirol
  № 5  
Ответить с цитированием
Neirol
 
Аватар для Neirol

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
Огромное спасибо.
Контейнер как раз таки решил и мой второй вопрос о start и stop Drag.

Добавлено через 25 минут
Вот, кому интересно, доделал класс.
Загружает указанное изображение, и делает его "draggable"
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
	import flash.display.Loader;
 
	public class Image extends Sprite
	{
		private var pic:Loader = new Loader();
 
		public function Image(imgsrc:URLRequest, xpos:Number=0, ypos:Number=0)
		{ 		
			pic.load(imgsrc);
			pic.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadImageComplete);
			this.addChild(pic);
 
			x = xpos;
			y = ypos;
 
			addEventListener(MouseEvent.MOUSE_DOWN, dragingS);
			addEventListener(MouseEvent.MOUSE_UP, dragingE);
		}
 
		public function onLoadImageComplete(e:Event):void 
		{
			pic.x = -width / 2;
			pic.y = -height / 2;
		}
 
		public function dragingS(e:MouseEvent):void {
			startDrag();
		}
 
		public function dragingE(e:MouseEvent):void {
			stopDrag();
		}
	}
}
__________________
Рожденный ползать, везде пролезет...

Старый 05.10.2009, 23:20
cybercub вне форума Посмотреть профиль Отправить личное сообщение для cybercub Найти все сообщения от cybercub
  № 6  
Ответить с цитированием
cybercub

Регистрация: Nov 2005
Сообщений: 34
пару коментариев:
линейные размеры теоретически лучше у pic брать
листенеры должны быть приватными

ну и именования вроде imgsrc, pic, xpos и dragingE немного глаза режут..
на крайняк imgSrc но помому достаточно url,
xpos -> x или positionX
draggingE -> onMouseUp (это если следовать именованию onLoadImageComplete)
хотя может частично это у меня уже такие привычки 8)


Последний раз редактировалось cybercub; 05.10.2009 в 23:25.
Старый 06.10.2009, 15:53
Neirol вне форума Посмотреть профиль Отправить личное сообщение для Neirol Посетить домашнюю страницу Neirol Найти все сообщения от Neirol
  № 7  
Ответить с цитированием
Neirol
 
Аватар для Neirol

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
Да, ты прав.
Просто код сделал как для примера, и взял кусок из твоего, для скорости.
Не привык пока все на автомате писать в корректном стиле.
А вот насчет линейных размеров не очень понял, поясни пожалуйста.
__________________
Рожденный ползать, везде пролезет...

Старый 06.10.2009, 19:23
cybercub вне форума Посмотреть профиль Отправить личное сообщение для cybercub Найти все сообщения от cybercub
  № 8  
Ответить с цитированием
cybercub

Регистрация: Nov 2005
Сообщений: 34
Думаю логичнее:
Код AS3:
pic.x = -pic.width / 2;
pic.y = -pic.height / 2;

Старый 06.10.2009, 20:20
elfon вне форума Посмотреть профиль Отправить личное сообщение для elfon Найти все сообщения от elfon
  № 9  
Ответить с цитированием
elfon
 
Аватар для elfon

Регистрация: Jul 2009
Сообщений: 35
Когда Loader'ом загружается картинка, она становится его единственным потомком( притом Bitmap'ом). Дак вот, подвигать можно его(loader.content.x/y).
Про класс, лучше передавай String с адресом, а уже внутри создавай URLRequest.

Старый 06.10.2009, 21:23
Neirol вне форума Посмотреть профиль Отправить личное сообщение для Neirol Посетить домашнюю страницу Neirol Найти все сообщения от Neirol
  № 10  
Ответить с цитированием
Neirol
 
Аватар для Neirol

Регистрация: Sep 2009
Адрес: X = 10, Y = 420, Z = -35
Сообщений: 52
Отправить сообщение для Neirol с помощью ICQ Отправить сообщение для Neirol с помощью Skype™
elfon, спасибо за еще один вариант, но с вариантом контейнера ввиде спрайта, возможностей для различных манипуляций объектом гораздо больше чем просто лоадер.
В итоге, с вашими подсказками:
Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.URLRequest;
	import flash.display.Loader;
 
	public class Image extends Sprite
	{
		private var pic:Loader = new Loader();
 
		public function Image(url:String, positionX:Number=0, positionY:Number=0)
		{ 		
			pic.load(new URLRequest(url));
			pic.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadImageComplete);
			this.addChild(pic);
 
			x = positionX;
			y = positionY;
 
			addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
			addEventListener(MouseEvent.MOUSE_UP, onMouseUPHandler);
		}
 
		public function onLoadImageComplete(e:Event):void 
		{
			pic.x = -pic.width / 2;
			pic.y = -pic.height / 2;
		}
 
		public function onMouseDownHandler(e:MouseEvent):void {
			startDrag();
		}
 
		public function onMouseUpHandler(e:MouseEvent):void {
			stopDrag();
		}
	}
}
__________________
Рожденный ползать, везде пролезет...

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

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

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


 


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


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