Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Movieclip FLIPping... (http://www.flasher.ru/forum/showthread.php?t=22936)

MaxDM 13.11.2001 11:49

Movieclip FLIPping...
 
Здраствуйте!!

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



Макс.

vol 13.11.2001 12:20

Это можно.
 
Вложений: 1
И проще, чем ты думаешь.

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

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

Спасибо, Fisher!
 
Я всегда был уверен, что ты - настоящий товарисч!

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


Часовой пояс GMT +4, время: 16:24.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.