|
|
|||||
Matrix Transform так же как в флеше
в флеше есть Align&Info&Transform так вот в Trasnform есть много хороших параметров как мне их вычислит имея matrix обекта?
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Читаем про .c и .d параметры в хелпе.
|
|
|||||
а ты возми и попробуй.
недостаточна проста исползавать .c .d нужна как то еще с шириной и высотой вычислять я уже давно спрашивал как узнать угол разворота объекта с matrix так некто и не ответил... вот тут я использую matrix и так не нашол ответа... перепробовал немало возможных вариантов http://www40.brinkster.com/ninja4ere...tor/index.html
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
|
|||||
Регистрация: Apr 2003
Сообщений: 243
|
Насколько я представляю себе матричные преобразования, в общем случае эта задача решения не имеет.
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
styx, у Iv-а есть SkewedMovieClip, где нормальные _xskew, _yskew
/* © 2002 - 2004, Ivan Dembicki, ivan@dembicki.org, dembicki@narod.ru please check updates: http://www.dembicki.org SkewedMovieClip class version 1.0 last update: October 2, 2005 Usage example is below the class code. */ import flash.geom.Transform; import flash.geom.Point; class org.dembicki.SkewedMovieClip extends MovieClip { private var skew_transformation_center:Object; function SkewedMovieClip() { this.setSkewTransformationCenter(); } public function setSkewTransformationCenter(x, y):Object { var point = new flash.geom.Transform(this).matrix.deltaTransformPoint(new flash.geom.Point(x || 0, y || 0)); this.skew_transformation_center = {x:x || 0, y:y || 0, xbase:this._x+point.x, ybase:this._y+point.y}; return this.skew_transformation_center; } public function removeSkew() { var trans = new flash.geom.Transform(this); var matrix = trans.matrix; matrix.a = matrix.d=1; matrix.b = matrix.c=0; trans.matrix = matrix; if (this.skew_transformation_center) { this.applySkewTransformationCenter(); delete this.skew_transformation_center; } } public function setSkew(xskew, yskew) { var trans = new flash.geom.Transform(this); var matrix = trans.matrix; matrix.a = isNaN(yskew) ? matrix.a : Math.cos(yskew); matrix.b = isNaN(yskew) ? matrix.b : Math.sin(yskew); matrix.c = isNaN(xskew) ? matrix.c : -Math.sin(xskew); matrix.d = isNaN(xskew) ? matrix.d : Math.cos(xskew); trans.matrix = matrix; this.applySkewTransformationCenter(); } // _xskew public function get _xskew():Number { var matrix = new flash.geom.Transform(this).matrix; return Math.acos(matrix.d)*(matrix.c>0 ? -1 : 1); } public function set _xskew(xskew:Number) { if (!this.skew_transformation_center) { this.setSkewTransformationCenter(); } var trans = new flash.geom.Transform(this); var matrix = trans.matrix; matrix.c = -Math.sin(xskew); matrix.d = Math.cos(xskew); trans.matrix = matrix; this.applySkewTransformationCenter(); } // _yskew public function get _yskew():Number { var matrix = new flash.geom.Transform(this).matrix; return Math.acos(matrix.a)*(matrix.b>0 ? 1 : -1); } public function set _yskew(yskew:Number) { if (!this.skew_transformation_center) { this.setSkewTransformationCenter(); } var trans = new flash.geom.Transform(this); var matrix = trans.matrix; matrix.a = Math.cos(yskew); matrix.b = Math.sin(yskew); trans.matrix = matrix; this.applySkewTransformationCenter(); } // PRIVATE private function applySkewTransformationCenter() { var obj = this.skew_transformation_center; var trans = new flash.geom.Transform(this); var matrix = trans.matrix; var pt = matrix.deltaTransformPoint(new flash.geom.Point(obj.x, obj.y)); matrix.tx = obj.xbase-pt.x; matrix.ty = obj.ybase-pt.y; trans.matrix = matrix; } } // USAGE EXAMPLE /* import org.dembicki.SkewedMovieClip; this.createEmptyMovieClip("skewed_mc", 0); // set inheritance this.skewed_mc.__proto__ = org.dembicki.SkewedMovieClip.prototype; // triangle drawing this.skewed_mc.beginFill(0, 90); this.skewed_mc.lineTo(100, 0); this.skewed_mc.lineTo(100, 100); this.skewed_mc.endFill(); // pozition this.skewed_mc._x = 200; this.skewed_mc._y = 100; // set transformation center sight this.skewed_mc.createEmptyMovieClip("pt_center_mc", 0); this.skewed_mc.pt_center_mc.lineStyle(0, 0xFF00FF, 100); this.skewed_mc.pt_center_mc.moveTo(-10, 0); this.skewed_mc.pt_center_mc.lineTo(10, 0); this.skewed_mc.pt_center_mc.moveTo(0, -10); this.skewed_mc.pt_center_mc.lineTo(0, 10); // set skew animation this.setEnterFrame = function() { var step_angle = 1; var step = step_angle*(Math.PI/180); this.skewed_mc.onEnterFrame = function() { this._yskew += step; this._xskew += step*.5; }; }; // set change transformation senter this.skewed_mc.onMouseUp = function() { if (!this.enterFrame) { this._parent.setEnterFrame(); } this.setSkewTransformationCenter(this._xmouse, this._ymouse); this.pt_center_mc._x = this._xmouse; this.pt_center_mc._y = this._ymouse; }; // remove skew Key.addListener(this); this.onKeyUp = function() { if (Key.getCode() == Key.SPACE) { delete this.skewed_mc.onEnterFrame; this.skewed_mc.removeSkew(); } }; */ |
|
|||||
большое спасибо за код сейчас буду разберется...
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
|
|||||
еще один вопрос
ест concatenatedMatrix касторы как localToGlobal а вот мне нужна globalToLocal к Matrix... ... спрашивал не раз но так некто и не ответил...
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
|
|||||
всо хорошо и красиво с этим кодам но до меня так и не дошло как можна добиться параметром такие же как показывает флеш в info
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
|
|||||
D12 спасибо я с это во tutorial и начинать ....
я там и научился как работат с matrix и про concatenatedMatrix но я так и неврубился ... возьми заделай квадрат в flash по крути его поиграйся с skew а потом попробуй вычислит таки еже параметры что показывает флеш в Info
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
Часовой пояс GMT +4, время: 15:27. |
|
« Предыдущая тема | Следующая тема » |
|
|