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

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

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

Регистрация: Feb 2009
Сообщений: 8
По умолчанию localToGlobal - не пересчитывает координаты!

После пары дней попыток понял, что ничего не понял.
Намерено не отображаю все попытки использования localToGlobal
Упрощенный код проекта (там же и задача):
Код:
package{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import figura;

	public class problem extends Sprite{
	
			public var pF:figura;
					var i:uint=0;

	public function problem(){
		addChild(pBtnCreate);
		addEventListener("enterFrame",on_clk_btn_create);

	}
	function on_clk_btn_create(event:Event){
		if(pBtnCreate.flag_on){
		   			removeEventListener("enterFrame",on_clk_btn_create);
					 pF = new figura();
					 addChild(pF);
				   }
		}
	}
}}
//----------------------------------------------------------------------------
package{
	import flash.geom.*;


	public class figura extends Sprite{

		public function figura(){
			pX =  200;
			pY =  300;
			draw();
				addEventListener("mouseDown",ClickDownButton);
		}

	  private function draw(x:uint,y:uint):void {
				graphics.beginFill(0xFF9966);
				graphics.drawRect(pX,pY, 60, 60);
				graphics.endFill();
	//			Тут фигура рисуется правильно,по глобальным координатам
	}

	function ClickDownButton(event:MouseEvent):void {
		removeEventListener("mouseDown",ClickDownButton);
//По клику мыши фигура должна переместится в точку x = 400,y = 10(глобальные)
		this.x = 400;
		this.y = 10;
//	Вопрос: как применить "localToGlobal"?
	}
}}
Подскажите,спецы, где я напутал?

Старый 08.07.2009, 15:13
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
вам нужно globalToLocal, а не наоборот...
__________________
Hell is the possibility of sanity

Старый 08.07.2009, 15:41
vadimled вне форума Посмотреть профиль Отправить личное сообщение для vadimled Найти все сообщения от vadimled
  № 3  
Ответить с цитированием
vadimled

Регистрация: Feb 2009
Сообщений: 8
Сейчас порпробую

Добавлено через 20 минут
Результата нет
Код:
package{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import figura;

	public class problem extends Sprite{
	
			public var pF:figura;
					var i:uint=0;

	public function problem(){
		addChild(pBtnCreate);
		addEventListener("enterFrame",on_clk_btn_create);

	}
	function on_clk_btn_create(event:Event){
		if(pBtnCreate.flag_on){
		   			removeEventListener("enterFrame",on_clk_btn_create);

				   for( i=0; i < pmap.mainPoint.length;i++){
						 pF = new figura();
					     addChild(pF);
				   }
		}
	}
}}
//----------------------------------------------------------------------------
package{
	import flash.geom.*;


	public class figura extends Sprite{

		public function figura(){
			pX =  200;
			pY =  300;
			draw();
				addEventListener("mouseDown",ClickDownButton);
		}

	  private function draw(x:uint,y:uint):void {
				graphics.beginFill(0xFF9966);
				graphics.drawRect(pX,pY, 60, 60);
				graphics.endFill();
	//			Тут фигура рисуется правильно,по глобальным координатам
	}

	function ClickDownButton(event:MouseEvent):void {
		removeEventListener("mouseDown",ClickDownButton);
//По клику мыши фигура должна переместится в точку x = 400,y = 10(глобальные)
		var dpX:int = 400;
		var dpY:int = 10;
		
//	Попробовал так. 
		var stagePoint:Point = new Point(dpX,dpY); 
		var mypoint:Point = bigFigura.globalToLocal(stagePoint); 
				this.x = mypoint.x; 						
				this.y = mypoint.y;

	}
}}
Добавлено через 21 минуту
ОшибкаbigFigura.

Добавлено через 4 часа 53 минуты
Все!Разобрался без globalToLocal. Если кому интересно, отвечу с удовольствием.

Старый 15.07.2009, 11:01
nnk вне форума Посмотреть профиль Отправить личное сообщение для nnk Найти все сообщения от nnk
  № 4  
Ответить с цитированием
nnk

Регистрация: Oct 2008
Сообщений: 9
у меня тож тут такая проблема слухи говорят о том в моем коде надо через localToGlobal, но как я немогу может поможете вот мой код
Код AS3:
map.addEventListener(MouseEvent.MOUSE_WHEEL, MEvent);
 
function MEvent(event:MouseEvent):void{
				var mod:Number = 10;
 
				map.scaleX += event.delta / mod;
				map.scaleY += event.delta / mod;
 
// здесь направо убегает после масштабирования
				map.x = ((2 * mouseX) - (2 * (event.localX * map.scaleX))) / 2;
				map.y = ((2 * mouseY) - (2 * (event.localY * map.scaleY))) / 2;
 
		}
Добавлено через 1 минуту
масштабирование должно от курсора мышки, т.е. центр масштабирования где курсор мышки

Старый 15.07.2009, 11:24
vadimled вне форума Посмотреть профиль Отправить личное сообщение для vadimled Найти все сообщения от vadimled
  № 5  
Ответить с цитированием
vadimled

Регистрация: Feb 2009
Сообщений: 8
Ну,насколько я понимаю, localToGlobal тут ни причем. Проблема в том что,что "scale" не массштабирует относительно центра фигуры а относительно её нуля. Я в таких случаях расчитываю компенсацию на смещение, что-то типа такого:
Код AS3:
this.x = dpX+(<font color="Red">sizeMuvikfont>-(<font color="Red">sizeMuvikfont> * this.scaleX));
this.y = dpY+(<font color="Red">sizeMuvikfont>-(<font color="Red">sizeMuvikfont> * this.scaleX));
Добавлено через 1 минуту
Некрасиво получилось.

Код AS3:
this.x = dpX+(sizeMuvik-(sizeMuvik* this.scaleX));
this.y = dpY+(sizeMuvik-(sizeMuvik* this.scaleX));

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

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

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


 


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


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