Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Перевод координат (http://www.flasher.ru/forum/showthread.php?t=176700)

Ar_man115 15.03.2012 20:27

Перевод координат
 
И снова здравствуйте. Извините за назойливость, но не выходит "побороть координаты"
Начало проблемы находится здесь. Благодаря помощи на форуме дошли до такого кода
Код AS1/AS2:

import mx.transitions.Tween;
import mx.transitions.easing.*;
var cities:Array = ['Prim', 'Berd']
 
function mover (targetX, targetY){
currentX = marker_mc._x;
currentY = marker_mc._y;
var xTween:Tween = new Tween(marker_mc, "_x", Strong.easeOut, currentX, targetX, .5, true);
var yTween:Tween = new Tween(marker_mc, "_y", Back.easeOut, currentY, targetY, 1.5, true);
}
 
for (var i = 0; i<cities.length; i++){
var my_btn =  this[cities[i] + '_dist'][cities[i] + '_btn'];
my_btn.myCity = cities[i];
my_btn.onPress = function() {
trace(this.myCity)       
trace(marker_mc);
 
mover(this._x, this._y);
marker_mc.gotoAndStop(this.myCity);
}
}

Этот код благополучно меняет кадр в объекте marker_mc и перемещает сам маркер.
Но перемещает он его не на место, где расположен сам объект, а по координатам, близким к началу координат.

Копание в отладчике показало, что координаты объектов (в отладчике) равны 0,0... Как я понимаю, это координаты кнопки внутри контейнера и они абсолютно не совпадают с координатами самого ролика. Отсюда вопрос: как изменить координаты объекта в мувиклипе на глобальные координаты для подстановки в строку
Код AS1/AS2:

mover(this._x, this._y);

Спасибо за помощь

mooncar 15.03.2012 20:37

Читайте про методы localToGlobal и globalToLocal.

Ar_man115 15.03.2012 20:39

Спасибо, посмотрю

Добавлено через 15 часов 40 минут
Провозился с localToGlobal несколько часов, но так и не получилось его использовать

Добавил в код

Код AS1/AS2:

var my_dist =  this[cities[i] + '_dist'];
var my_point =  this[cities[i] + '_btn'];
trace(my_dist.localToGlobal(my_point));

В результате undefined

Пробовал

Код AS1/AS2:

var clickPoint:Point=new Point(this._x, this._y);
var stagePoint:Point = this.localToGlobal(clickPoint);
trace(stagePoint.x);

Тот-же результат:wacko:

Сил уже просто нет(

Добавлено через 19 часов 17 минут
Ну просто ума не приложу...
Вставляю отрывок
Код AS1/AS2:

var new_point:Point=new Point();
new_point.x = this._x;
new_point.y = this._y;
trace (new_point.x);
trace (new_point.y);
new_point = localToGlobal(new_point);
trace (new_point.x);
trace (new_point.y);

Получаю
Цитата:

0
0.05
undefined
undefined
Т.е. до localToGlobal локальные координаты показываются, а после становятся undefined

Ar_man115 17.03.2012 16:47

Вложений: 1
Вот исходник.
Заранее прошу прощения за стиль, просто это мой первый проект

Ar_man115 19.03.2012 15:05

Проблема решена без использования localToGlobal
Конечный код выглядит так
Код AS1/AS2:

import mx.transitions.Tween;
import mx.transitions.easing.*;
var cities:Array = ['Prim', 'Berd']
 
function mover (targetX, targetY){
currentX = marker_mc._x;
currentY = marker_mc._y;
var xTween:Tween = new Tween(marker_mc, "_x", Strong.easeOut, currentX, targetX, .5, true);
var yTween:Tween = new Tween(marker_mc, "_y", Back.easeOut, currentY, targetY, 1.5, true);
}
 
for (var i = 0; i<cities.length; i++){
var my_btn =  this[cities[i] + '_dist'][cities[i] + '_btn'];
my_btn.myCity = cities[i];
my_btn.onRelease = function() {
var my_dist =  this._parent;
mover(my_dist._x, my_dist._y);
marker_mc.gotoAndStop(this.myCity);
}
}



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

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