![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 8
|
После пары дней попыток понял, что ничего не понял.
Намерено не отображаю все попытки использования 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"?
}
}}
|
|
|||||
|
Регистрация: 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;
}
}}
Ошибка Добавлено через 4 часа 53 минуты Все!Разобрался без globalToLocal. Если кому интересно, отвечу с удовольствием. |
|
|||||
|
Регистрация: Oct 2008
Сообщений: 9
|
у меня тож тут такая проблема слухи говорят о том в моем коде надо через localToGlobal, но как я немогу может поможете вот мой код
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; } масштабирование должно от курсора мышки, т.е. центр масштабирования где курсор мышки |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 8
|
Ну,насколько я понимаю, localToGlobal тут ни причем. Проблема в том что,что "scale" не массштабирует относительно центра фигуры а относительно её нуля. Я в таких случаях расчитываю компенсацию на смещение, что-то типа такого:
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)); Некрасиво получилось. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|