2010-08-18 2 views
0

У меня есть символ, первоначально созданный в координате [-100, -100] (левый верхний угол). Теперь я помещаю экземпляр этого символа на сцену в координатах этапа [0,0] (путем перетаскивания его мышью в IDE). Имея этот экземпляр, я могу как-то определить исходную позицию [-100, -100] из ActionScript? (myInstance.x возвращает координату этапа).Как получить координаты локальных символов из ActionScript?

Что я делаю:

  • создать новый символ в библиотеке, расположенной в -100, -100 координаты при его создании
  • положить экземпляр этого символа на сцене в некоторых других координатах
  • в ActionScript попытаться получить оригинальный -100 значение из объекта экземпляра, как:

this.myInstance.x (только этот RETU RNS этап координат)

Почему я это делаю:

Я пытаюсь поставить этот мувиклип в BitmapData:

var myClip:MovieClip = this.myInstance; 
var bmp:BitmapData = new BitmapData(myClip.width, myClip.height); 
bmp.draw(myClip); 

Проблема заключается в том BitmapData выглядит как принимать только часть клипа лежащих в положительных координатах. Чтобы преодолеть это, я должен был бы обеспечить преобразование матрицы с соответствующими смещениями:

var m:Matrix = new Matrix(); 
m.tx = 100; 
m.ty = 100; 
bmp.draw(myClip, m); 

я смог бы рассчитать это смещение, если я знал, что оригинальный символ координат, прежде чем она была сброшена на сцене.

Надеюсь, это имеет смысл.

+0

Создано на -100, -100, вы имеете в виду, что вы использовали что-то вроде графики.draw из MovieClip и рисовали на -100, -100? Можете ли вы сделать это более ясным? – Obto

+0

@Fox Я имею в виду, когда я дважды щелкаю по этому символу в библиотеке, он находится в тех -100 координатах.Имея экземпляр этого символа на сцене с совершенно разными координатами, я как-то пытаюсь получить исходный номер -100. – serg

ответ

5
// get bounds including strokes 
// traces (x=-105, y=-105, w=110, h=110) 
trace(myInstance.getBounds(myInstance)); 

// get bounds excluding strokes 
// traces (x=-100, y=-100, w=100, h=100) 
trace(myInstance.getRect(myInstance)); 
+0

Похоже, это то, что мне нужно, спасибо :) – serg

+0

Никогда не думал об этом ... очень умно! +1 – Obto

0

Думаю, я понимаю, о чем вы говорите. Если у вас есть объект имени внутри вашего символа, я думаю, вы можете это сделать. Например, если у вас есть символ с изображением с именем myImage в нем (x, y). Я считаю, что вы можете использовать mySymbol.myImage.x или mySymbol.myImage.y. Это то, что вы имели ввиду?

+0

Извините, если я не понимаю, я хорошо знаком со вспышкой. Когда я дважды нажимаю на символ в библиотеке, я вижу, что он находится на [-100, -100]. Но экземпляр на сцене находится в совершенно разных координатах. Я пытаюсь получить эти исходные координаты из экземпляра. – serg

+0

Я уверен, что понимаю, что вы говорите. Почему вы пытаетесь это сделать? Можете ли вы предоставить лучший пример? Это может помочь решить проблему. –

+0

См. Обновленный вопрос. – serg

0

Ваш объект может сохранять свое положение во время его добавления на сцену до его перемещения, прослушивая Event.ADDED_TO_STAGE в объекте Point.

+0

Извините, я имел в виду, что я вручную поставил его на сцену, просто перетащив его на сцену. – serg

0

Спасибо за разъяснение, теперь имеет больше смысла!

Что вы спрашиваете, как правильно найти координаты графики внутри MovieClip? Для этого вам нужно сохранить графику в другом символе. Итак, просто дважды щелкните символ и выберите все графические элементы внутри него. нажмите F8, чтобы сделать его еще одним символом и присвоить ему имя экземпляра по вашему вкусу (например, бар). По существу, вы делаете MovieClip в MovieClip.

Теперь, когда вы добавляете экземпляр символа на сцену (скажем, его имя foo), просто сделайте foo.bar.x или foo.bar.y, и вы увидите графическое местоположение.

Смежные вопросы