![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Я загружаю картинку ... и по умолчанию точка регистрации устанавливается в левый верхний угол .... когда начинаю вращать картинку она вращается именно вокруг этой точки... так вот как сменить ее расположение на картинке? Вот код:
function start():void { loader = new Loader(); loader.load(new URLRequest("file:///E:/res/page-001.jpeg")); img.addChild(loader); } var loader:Loader; var img:Sprite = new Sprite(); this.addChild(img); start (); public function vrawenie(e:Event):void { img.rotationY=i; } тоже самое с углом 267 (а должно быть 270), с чем это связано?Последний раз редактировалось helgboy; 07.01.2009 в 15:42. |
|
|||||
|
Цитата:
Крутите контейнер - все! ![]() Второй вопрос не понятен, флеш работает в двумерной системе координат, т.е. в одной плоскости - экран. Может вы юзаете FP10, Five3D и т.д., которые умеют крутить в другой плоскости? P.S. Про FP10 не уверен, ибо не юзал есчо. |
|
|||||
|
Как поместить картинку на контейнер??? Опишите пожалуйста подробнее..
|
|
|||||
|
|
|
|||||
|
да я уже делал это.... просто не знал что это называется контейнер
,с помощью img.x=451 я смещаю точку регистрации (ну или центр вращения) вместе с рисунком, а сама точка относительно рисунка не смещается, он продолжает вращаться вокруг левого верхнего угла ..... |
|
|||||
var img:Sprite = new Sprite(); img.rotation = 30; addChild(img); start(); function start():void { loader.addEventListener(Event.COMPLETE, onLoadComplete); loader.load(new URLRequest("file:///E:/res/page-001.jpeg")); } private function onLoadComplete(event:Event):void { loader.x = -loader.width / 2; loader.y = -loader.height / 2; img.addChild(loader); } Получается, что тут img - контейнер. |
|
|||||
|
странно что то у меня переменные
loader.width / 2; loader.height / 2 принимают значение 0 ; Добавлено через 7 минут а вообще все работает... если вручную поставить значение! Спасибо! ![]() |
|
|||||
|
Хотя и так должно работать, вроде бы. Или я перепил...
__________________
Дело не в тебе Последний раз редактировалось AL.exe; 07.01.2009 в 23:41. |
|
|||||
|
Вот очень полезный класс (для установки точки регистрации на лету):
package { import flash.display.MovieClip; import flash.geom.Point; /** * Extends MovieClip adding a dynamic registration point * * Based on AS2 work by Darron Schall (www.darronschall.com) * Original AS1 code by Robert Penner (www.robertpenner.com) * * @author Oscar Trelles * @version 1.0 * @created 12-Mar-2007 11:53:50 AM */ public class DynamicMovie extends MovieClip { public var rp:Point; function DynamicSprite() { setRegistration(); } public function setRegistration(x:Number=0, y:Number=0):void { rp = new Point(x, y); } public function get x2():Number { var p:Point = this.parent.globalToLocal(this.localToGlobal(rp)); return p.x; } public function set x2(value:Number):void { var p:Point = this.parent.globalToLocal(this.localToGlobal(rp)); this.x += value - p.x; } public function get y2():Number { var p:Point = this.parent.globalToLocal(this.localToGlobal(rp)); return p.y; } public function set y2(value:Number):void { var p:Point = this.parent.globalToLocal(this.localToGlobal(rp)); this.y += value - p.y; } public function get scaleX2():Number { return this.scaleX; } public function set scaleX2(value:Number):void { this.setProperty2("scaleX", value); } public function get scaleY2():Number { return this.scaleY; } public function set scaleY2(value:Number):void { this.setProperty2("scaleY", value); } public function get rotation2():Number { return this.rotation; } public function set rotation2(value:Number):void { this.setProperty2("rotation", value); } public function get mouseX2():Number { return Math.round(this.mouseX - rp.x); } public function get mouseY2():Number { return Math.round(this.mouseY - rp.y); } public function setProperty2(prop:String, n:Number):void { var a:Point = this.parent.globalToLocal(this.localToGlobal(rp)); this[prop] = n; var b:Point = this.parent.globalToLocal(this.localToGlobal(rp)); this.x -= b.x - a.x; this.y -= b.y - a.y; } } } По второму пункту. Почитай в хелпе про projectionCenter (это точка горизонта) - если она находится, не точно под плоскостью вращения, а например в крайнем левом углу, мы можем увидеть перпендикулярные плоскости и чем больше расстояние от точки горизонта, тем они виднее. Если же необходимо чтобы 270 было 270 больше чем для одного объекта - рисуй их через drawTriangles - Есть статья у сенокуляра: http://www.senocular.com/flash/tutor...h10drawingapi/
__________________
if (love is true) break my.heart; Последний раз редактировалось Rzer; 08.01.2009 в 00:07. |
|
|||||
|
Спасибо за такой исчерпывающий ответ!!!! вот только помоему это не применимо к AS3 а на счет статейки отдельное спасибо на досуге переведу и почитаю....
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|