![]() |
_height мувика повернутого на 90°
Вложений: 1
Удивительное поведение мувика - на один и тот же код реагирует по-разному в первом и втором клике
Код:
function вывих_мозга() {Вложение 19217 |
Это происходит с любым таким мувиком.
А если повернуть не на 90, а на 46, то там вообще он постепенно будет расти, как гриб. |
Transform, Matrix.
|
Цитата:
Цитата:
|
У меня ничего не происходит падобного. Попробуй посмотреть не в debug плеере а в standAlon....
Зато я знаюдругое если мувиклип загрузить методом loadClip(); и при onLoadComplete() сразуже написать stop(); На тот клип что загрузился, то он повернется на 90 градусов. |
Так гораздо забавнее
Код:
function вывих_мозга() { |
Цитата:
Я уж и всеми плеерами просмотрел и в разные версии сохранял - баг остается. Как вы добились, что все нормально показывает??? Цитата:
Цитата:
|
Да меня глюкануло :). Ну можно предположить то что оно там делает...
|
Вы задали матрицу трансоформации, а потом начинаете рулить сеттерами и геттерами, вместо матрицы. Тут снесет башню не только флешу.
|
Цитата:
|
тоже встречался с такой шнягой, бился целый день. В твоем случае работает так как надо это
Код:
function вывих_мозга() { |
Цитата:
|
Вообщем причину глюка примерно начал представлять:
для этого надо понять, что свойства _height и _width вовсе не синонимичны свойствам _yscale и _xscale. Последние относительны самого клипа, а первые - относительны родителя мувиклипа. При чтении _height и _width не возникает никаких проблем. Но вот при задании - не все так очевидно. Если оси системы координат клипа и его родителя совпадают, то нет проблем. А если не совпадают, то бедный ФП пытается решить непростую задачку, которая ему похоже не по зубам: какое из значений _yscale и _xscale (совпадающие с осями координат мувика) надо увеличить на какую величину, чтобы в системе осей координат родителя клип имел такие-то и такие-то _height и _width . add: (на самом деле параметров a,d Transform Matrix ) Возможно, это проблема лишь с последними ФП, где, действительно, для трансформации мувика используются матрицы преобразования (пожалуй, лучшее объяснения Transformation Matrix, не смотря даже на английский, находится тут) Интересно, как в предыдущих версиях ФП происходила трансформация мувика и была ли такая проблема? Пока нет возможности проверить по неимении старых ФП :) |
Ребята, научите пожалуйста, как пользоваться этим классом (Transform Matrix) для задания точных _width и _height для мувика, а то что-то в справке по флеш это не сказано (только scale, Translation, Rotation, Skewing).
Уже второй раз сталкиваюсь с этим _width - достал |
ну что может быть подробнее
Цитата:
|
Я уже смотрел и не нашел ни одного слова _width и _height в этой статье. Тыкните мне пальцем, где это.
|
Там их не будет. Для матрице нет такого понятия, как выота и ширина, то масштаб относительно размеров объекта.
|
На крайняк можно пойти через 5 точку:
Код:
var gg:Number=mc._rotation; |
Цитата:
to Psycho Tiger: спасибо за совет |
Цитата:
А __etc правильно написал, теперь увеличении/уменьшении идет через Transform, Matrix. Как было в старых ФП я пока не проверял. |
Да я просто думал, что с помощью Transform, Matrix можно изменять ширину/высоту мувика. Например, для ширины задать 123 пиксела, для высоты - 25пик.
(в том числе и для повернутого на 90 градусов) |
Такие трансформации делаеются с помощью класса Матрих и установки свойства клипа transform.matrix.
Как трансформить: Matrix это Object со свойствами {a,b,c,d,tx,ty} т.е. - - - - |a c tx| |scaleX skewX positionX| |b d ty| = |skewY scaleY positionY| |0 0 1| | 0 0 1 | - коэффициенты, необходимые для - - - - корректной конкатенации матриц Поясню, кто такие a=scaleX, c=skewX, tx=positionX, b=skewY, d=scaleY, ty=positionY. Сии коэффициенты являются коээфциентами ниже приведенных уравнений. scaleX определяет коэффициент масшатба по оси X, т.е. если scaleX=1, клип становиться больше по оси X, ежели scaleX=2, то клип растянется по оси Х вдвое. Аналогично scaleY. Теперь, skewX - так называемый скос - это некий процесс похожий на перемещение одной стороны прямоугольника относительно противоположной стороны. Получается параллелограм. SkewX - отвечает за скос по оси X, skewY - за скос по оси Y. tx,ty - это банальное смещение по осям X и Y соответственно. Расчет новых точек клипа по старым осуществляется по формулам: Xновый=а*Xстарый+с*Yстарый+tx Yновый=b*Xстарый+d*Yстарый+ty Вы хотите получить заданную ширину и длину клипа. Варьируйте параметрами scaleX, scaleY. Хотите получить заданное позиционирование клипа - варьируйте параметрами tx, ty. Хотите отвратительно исказить клип, пользуйтесь skewX и skewY. Т.е. задаешь сначала матрицу Matrix(полностью заполнив ее коэффициентами) и присваиваешь ссылку на нее свойству клипа transform.matrix и эге. Пойдем дальше. Для определенных процессов с клипом есть определнные термины. Например, 2-d вращение. Описывается матрицей: |cos(угол) sin(угол) 0| |-sin(угол) cos(угол) 0| |0 0 1| Записать это в виде формата класса Matrix можно так: a=cos(угол); b=-sin(угол); c= sin(угол); d=cos(угол); tx=0; ty=0; Для того чтобы повернуть клип и еще сжать и еще что нибудь по разным осям нужно применить конкатенацию матриц. Т.е необходимо сформировать несколько матриц трансформаций и в соотвествии с последовательностью трансформации их конкатенировать (для этого в классе Matrix реализован метод concat()). Далее, я думаю, будет понятно. Спасибо за внимание. |
| Часовой пояс GMT +4, время: 17:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.