Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   помогите доразобраться с localToGlobal (http://www.flasher.ru/forum/showthread.php?t=140493)

In8Finity 31.05.2010 19:38

помогите доразобраться с localToGlobal
 
К примеру, у меня внутри клипа clip_one создаётся clip_two.

Код AS3:

package {
 
        import flash.display.*;
        import flash.events.*;
        import flash.geom.Point;
 
        public class Main extends MovieClip {
 
                public var clip_one:MovieClip;
                public var clip_two:MovieClip;
 
                public function Main() {
 
                        clip_one = new One();
                        clip_one.x=clip_one.y=100;
                        addChild(clip_one);
                        trace(clip_one.x);
 
                        clip_two = new Two();
                        clip_one.addChild(clip_two);
 
                        var clickPoint:Point=new Point(clip_two.x,clip_two.y);
                        trace("coordinates:", clip_one.localToGlobal(clickPoint));
 
                }
        }
}

Данный пример работает. В конце трейс выдаёт обе координаты clip_two относительно главной сцены.
Во всех примерах, что я нашёл на этом сайте, примерно так-же, и на этом мысль обрывается.

А мне хотелось бы какой-нибудь переменной, например, "aaa" присвоить только значение "x" вложенного клипа, и чтобы оно обязательно было относительно главной сцены. (тоесть в этом примере - 100)
И потом этой переменной как-то оперировать дальше.

Как мне это сделать?
Код AS3:

var aaa = clip_one.localToGlobal(clip_two.x)

конечно, не работает.

КорДум 31.05.2010 19:44

Здесь элементарно - к координатам контейнера прибавляем координаты клипа. В итоге получаем глобальные координаты. Да localToGlobal, в принципе, и не нужен...
Вам я это советовал? Что-то не вспомнил, что есть способ попроще.

In8Finity 31.05.2010 19:57

Я как-то не подумал об этом. Пошёл сложным путём. (:
Спасибо.
Сейчас буду пробовать.

scar4ace 18.09.2011 20:51

Цитата:

Сообщение от КорДум (Сообщение 912087)
...

спасибо!

Wolsh 19.09.2011 01:04

Если все же хотите понять про localToGlobal, то продолжу)
Вы хотите узнать координату второго клипа в системе координат стейджа.
"Координата клипа" это центр его системы координат, то есть – его точка (0, 0).
Поэтому вместо координат второго клипа внутри первого клипа (к чему нам они?) мы создаем точку (0, 0), и после этого совершаем преобразование точки (0, 0) внутри клипа2 в точку на стейдже:
Код AS3:

var clickPoint:Point=new Point(0, 0);
var stagePoint:Point = clip_two.localToGlobal(clickPoint); // clip_two преобразовывает свою локальную координату в глобальную!
trace("coordinates: x:", stagePoint.x, " y:", stagePoint.y);



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

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