PDA

Просмотр полной версии : Movieclip FLIPping...


MaxDM
13.11.2001, 11:49
Здраствуйте!!

Кто-нибудь озадачивался проблемой зеркального переворачивания клипа?
то есть "Modufy/Transform/Flip Vertical" или "Горизонтал :)"
средствами акшнскрипта? _rotation - это же не совсем то, как я понимаю...



Макс.

vol
13.11.2001, 12:20
И проще, чем ты думаешь.

Сперва пишем функцию

function movieclip_fliphorz(){
this._xscale=-this._xscale;
}

Затем - пишем прототип для мувика

movieclip.prototype.flipHorz=movieclip_fliphorz;

Ну, и на кнопку сажаем

on (release) {
_root.picture.fliphorz();

}
где picture - это имя клипа.

На картинке - это не я, а Тимур Шаов, прекрасный бард.

Смотри исходник.

Al S'asha
13.11.2001, 12:59
Applause
Но для чего формула понятно. А для чего создавать прототип?
Без этой строчки работает.
Если можно поясните.
Thanks

MaxDM
13.11.2001, 13:38
Спасибо! То, что и надо!!!!


макс.

vol
13.11.2001, 13:49
В том варианте, который я выложил - без прототипа не работает. Прототип придает любому помещенному в сцену клипу новое свойство - в данном случае - флип. Можно написать теперь

pic1.fliphorz(); pic2.fliphorz(); bazuka.fliphorz() и т.д.

Закомментируй prototype и сразу все работать перестанет.
Можно и без него, но "это уже совсем другая история".

Fisher
13.11.2001, 14:22
А это что бы ентод метод со всеми твоими мувами работал. :)

RRR
13.11.2001, 14:41
Кому нить невлом разжевать, что за зверь прототип, но только на пальцах, по-человечески, плз.

vol
13.11.2001, 15:19
Есть у тебя какие-то стандартные типы. Мувиклип, или, скажем, строка. Для каждого из них можно расписать какое-то действие. Но ты хочешь, чтобы твое действие могло применяться автоматически ко всем объектам данного типа (класса). Например, ко всем мувам. Тогда ты описываешь поведение этого типа при обращении к функции. Т.е описав прототип, ты задаешь некоторые действия для всех помещенных в свой swf клипов. Получается новое как бы его свойство, вернее,- метод, применимый ко всем твоим клипам. В рамках форума это объяснить сложновато, а где почитать - не знаю, сам разбирался на пальцах, да на чужих примерах. Впрочем, как и большинство из нас.
Например, хочешь ты выровнять все свои клипы с именами qwe, rty, uio по горизонтали. Пишешь такой вот прототип:

Movieclip.prototype.alignX = function()

{
for (var m=1;m<arguments.length;m++)
{
if (typeof(arguments[m]) == "string") { arguments[m] = eval("_parent." + arguments[m]); }
}
if (arguments[0] eq "left")
{
for (var z=1;z<arguments.length;z++)
{
var temp = arguments[z];
temp._x = (this.getBounds(_parent)).xMin - ((temp.getBounds(_parent)).xMin - temp._x);
}
} else if (arguments[0] eq "right")
{
for (var z=1;z<arguments.length;z++)
{
var temp = arguments[z];
temp._x = (this.getBounds(_parent)).xMax - ((temp.getBounds(_parent)).xMax - temp._x);
}
} else if (arguments[0] eq "center")
{
for (var z=1;z<arguments.length;z++)
{
var temp = arguments[z];
temp._x = ((this.getBounds(_parent)).xMin + (this._width / 2)) - ((temp.getBounds(_parent)).xMin + (temp._width / 2) - temp._x);
}
} else {
for (var z=1;z<arguments.length;z++)
{
arguments[z]._x = this._x;
}
}
}


Тогда в сцене можно написать:

qwe.alignX("right",rty,uio);

И ведь выровняются, однако! И в списке их м.б. сколько хочешь, и ровнять можно (см.код) как угодно.
А можно написать прототип для string или еще для чего...


Кстати, если по прототипам кому описание попадется - дайте ссылку.

Fisher
13.11.2001, 15:37
Почитай здесь http://www.3wgraphics.com/experience/issue008.htm и скачай Джонову библиотеку - там многое и без описания понятно бут.

vol
13.11.2001, 15:59
Я всегда был уверен, что ты - настоящий товарисч!

По серьезному - есть, есть что почитать и чему подучиться. А то пролетарским-то чутьем хорошо, но долго.

RRR
13.11.2001, 16:19
:) :) :) :) :)
SPOSIBO!!!!!