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

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

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

Регистрация: Dec 2008
Адрес: Moscow
Сообщений: 58
Отправить сообщение для helgboy с помощью ICQ
Question как задать точку регистрации MovieClipa (програмно)?

Я загружаю картинку ... и по умолчанию точка регистрации устанавливается в левый верхний угол .... когда начинаю вращать картинку она вращается именно вокруг этой точки... так вот как сменить ее расположение на картинке? Вот код:
Код AS3:
function start():void
{
	loader = new Loader();
	loader.load(new URLRequest("file:///E:/res/page-001.jpeg"));
		img.addChild(loader);
}
 
var loader:Loader;
var img:Sprite = new Sprite();
this.addChild(img);
start (); 
public function vrawenie(e:Event):void {
			img.rotationY=i;
					}
и второй вопрос когда угол поворота 0 - все нормально:картинка распологается в плоскости экрана, когда 90 картинка по идее должна превратится в прямую линию, так вот это происходит при повороте на 87 а не 90 тоже самое с углом 267 (а должно быть 270), с чем это связано?


Последний раз редактировалось helgboy; 07.01.2009 в 15:42.
Старый 07.01.2009, 18:20
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 2  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Цитата:
Сообщение от helgboy Посмотреть сообщение
Я загружаю картинку ... и по умолчанию точка регистрации устанавливается в левый верхний угол .... когда начинаю вращать картинку она вращается именно вокруг этой точки... так вот как сменить ее расположение на картинке?
Лихо, поместите картинку на контейнер, картинке укажите координаты типа
Код AS3:
x = -image.width;
y = -image.height;
Крутите контейнер - все!

Второй вопрос не понятен, флеш работает в двумерной системе координат, т.е. в одной плоскости - экран.
Может вы юзаете FP10, Five3D и т.д., которые умеют крутить в другой плоскости?

P.S. Про FP10 не уверен, ибо не юзал есчо.

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

Регистрация: Dec 2008
Адрес: Moscow
Сообщений: 58
Отправить сообщение для helgboy с помощью ICQ
Как поместить картинку на контейнер??? Опишите пожалуйста подробнее..

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

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Код AS3:
container.addChild(image);

Старый 07.01.2009, 21:51
helgboy вне форума Посмотреть профиль Отправить личное сообщение для helgboy Найти все сообщения от helgboy
  № 5  
Ответить с цитированием
helgboy

Регистрация: Dec 2008
Адрес: Moscow
Сообщений: 58
Отправить сообщение для helgboy с помощью ICQ
да я уже делал это.... просто не знал что это называется контейнер ,
Код AS3:
var img:Sprite = new Sprite();
 
function start():void {
	loader.load(new URLRequest("file:///E:/res/page-001.jpeg"));
	img.addChild(loader);
}
img.x=451;
img.y=0;
this.addChild(img);
start();
с помощью img.x=451 я смещаю точку регистрации (ну или центр вращения) вместе с рисунком, а сама точка относительно рисунка не смещается, он продолжает вращаться вокруг левого верхнего угла .....

Старый 07.01.2009, 22:00
enepx вне форума Посмотреть профиль Отправить личное сообщение для enepx Посетить домашнюю страницу enepx Найти все сообщения от enepx
  № 6  
Ответить с цитированием
enepx
 
Аватар для enepx

Регистрация: Aug 2006
Адрес: Мюнхен
Сообщений: 509
Отправить сообщение для enepx с помощью ICQ Отправить сообщение для enepx с помощью Yahoo Отправить сообщение для enepx с помощью Skype™
Код AS3:
var img:Sprite = new Sprite();
img.rotation = 30;
addChild(img);
 
start();
 
function start():void {
	loader.addEventListener(Event.COMPLETE, onLoadComplete);
	loader.load(new URLRequest("file:///E:/res/page-001.jpeg"));
}
 
private function onLoadComplete(event:Event):void {
	loader.x = -loader.width / 2;
	loader.y = -loader.height / 2;
	img.addChild(loader);
}
Писал вручную на форуме, потому могут быть неточности, суть должна быть понятна.
Получается, что тут img - контейнер.

Старый 07.01.2009, 22:28
helgboy вне форума Посмотреть профиль Отправить личное сообщение для helgboy Найти все сообщения от helgboy
  № 7  
Ответить с цитированием
helgboy

Регистрация: Dec 2008
Адрес: Moscow
Сообщений: 58
Отправить сообщение для helgboy с помощью ICQ
странно что то у меня переменные
loader.width / 2;
loader.height / 2
принимают значение 0 ;

Добавлено через 7 минут
а вообще все работает... если вручную поставить значение!
Спасибо!

Старый 07.01.2009, 23:39
AL.exe вне форума Посмотреть профиль Отправить личное сообщение для AL.exe Посетить домашнюю страницу AL.exe Найти все сообщения от AL.exe
  № 8  
Ответить с цитированием
AL.exe
 
Аватар для AL.exe

Регистрация: Jan 2004
Адрес: Net
Сообщений: 1,049
Отправить сообщение для AL.exe с помощью ICQ
Код AS3:
loader.content.width / 2
loader.content.height / 2
Хотя и так должно работать, вроде бы. Или я перепил...
__________________
Дело не в тебе


Последний раз редактировалось AL.exe; 07.01.2009 в 23:41.
Старый 07.01.2009, 23:51
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 9  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Вот очень полезный класс (для установки точки регистрации на лету):

Код AS3:
package
{
	import flash.display.MovieClip;
	import flash.geom.Point;
 
	/**
	 * Extends MovieClip adding a dynamic registration point
	 *
	 * Based on AS2 work by Darron Schall (www.darronschall.com)
	 * Original AS1 code by Robert Penner (www.robertpenner.com)
	 *
	 * @author Oscar Trelles
	 * @version 1.0
	 * @created 12-Mar-2007 11:53:50 AM
	 */
	public class DynamicMovie extends MovieClip
	{
		public var rp:Point;
 
		function DynamicSprite()
		{
			setRegistration();
		}
 
		public function setRegistration(x:Number=0, y:Number=0):void
		{
			rp = new Point(x, y);
		}
 
		public function get x2():Number
		{
			var p:Point = this.parent.globalToLocal(this.localToGlobal(rp));
			return p.x;
		}
 
		public function set x2(value:Number):void
		{
			var p:Point = this.parent.globalToLocal(this.localToGlobal(rp));
			this.x += value - p.x;
		}
 
		public function get y2():Number
		{
			var p:Point = this.parent.globalToLocal(this.localToGlobal(rp));
			return p.y;
		}
 
		public function set y2(value:Number):void
		{
			var p:Point = this.parent.globalToLocal(this.localToGlobal(rp));
			this.y += value - p.y;
		}
 
		public function get scaleX2():Number
		{
			return this.scaleX;
		}
 
		public function set scaleX2(value:Number):void
		{
			this.setProperty2("scaleX", value);
		}
 
		public function get scaleY2():Number
		{
			return this.scaleY;
		}
 
		public function set scaleY2(value:Number):void
		{
			this.setProperty2("scaleY", value);
		}
 
		public function get rotation2():Number
		{
			return this.rotation;
		}
 
		public function set rotation2(value:Number):void
		{
			this.setProperty2("rotation", value);
		}
 
		public function get mouseX2():Number
		{
			return Math.round(this.mouseX - rp.x);
		}
 
		public function get mouseY2():Number
		{
			return Math.round(this.mouseY - rp.y);
		}
 
		public function setProperty2(prop:String, n:Number):void
		{
			var a:Point = this.parent.globalToLocal(this.localToGlobal(rp));
 
			this[prop] = n;
 
			var b:Point = this.parent.globalToLocal(this.localToGlobal(rp));
 
			this.x -= b.x - a.x;
			this.y -= b.y - a.y;
		}
	}
}
Единственное, он появился раньше чем вращение по Y, но думаю что его можно дописать по аналогии.

По второму пункту. Почитай в хелпе про projectionCenter (это точка горизонта) - если она находится, не точно под плоскостью вращения, а например в крайнем левом углу, мы можем увидеть перпендикулярные плоскости и чем больше расстояние от точки горизонта, тем они виднее. Если же необходимо чтобы 270 было 270 больше чем для одного объекта - рисуй их через drawTriangles - Есть статья у сенокуляра: http://www.senocular.com/flash/tutor...h10drawingapi/


Последний раз редактировалось Rzer; 08.01.2009 в 00:07.
Старый 08.01.2009, 01:44
helgboy вне форума Посмотреть профиль Отправить личное сообщение для helgboy Найти все сообщения от helgboy
  № 10  
Ответить с цитированием
helgboy

Регистрация: Dec 2008
Адрес: Moscow
Сообщений: 58
Отправить сообщение для helgboy с помощью ICQ
Спасибо за такой исчерпывающий ответ!!!! вот только помоему это не применимо к AS3 а на счет статейки отдельное спасибо на досуге переведу и почитаю....

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

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

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


 


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


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