![]() |
|
||||||||||
|
|||||
|
в флеше есть Align&Info&Transform так вот в Trasnform есть много хороших параметров как мне их вычислит имея matrix обекта?
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Читаем про .c и .d параметры в хелпе.
|
|
|||||
|
а ты возми и попробуй.
недостаточна проста исползавать .c .d нужна как то еще с шириной и высотой вычислять я уже давно спрашивал как узнать угол разворота объекта с matrix так некто и не ответил... вот тут я использую matrix и так не нашол ответа... перепробовал немало возможных вариантов http://www40.brinkster.com/ninja4ere...tor/index.html
__________________
зарание на ашыбки не сматрет 11 лет как неписал на руска... зайдите на сайт паиграт в игрй может время будет новйе закину |
|
|||||
|
Регистрация: Apr 2003
Сообщений: 243
|
Насколько я представляю себе матричные преобразования, в общем случае эта задача решения не имеет.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
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, время: 19:08. |
|
|
« Предыдущая тема | Следующая тема » |
|
|