![]() |
|
||||||||||
|
|||||
|
Здравствуйте!
Помогите плиз... Требуется сделать сектор растущий "из нуля" и образующий круг по средствам вращения одной из его сторон, когда 2-ая неподвижна, как показано на примере: Была идея вращать жирную линию по оси которая находится на одном из ее концов и копирывать в каждом кадре после сдвига при помощи MovieClipDuplicate. Проблема в том что я не знаю как точно это сделать. Пробовал делать этот Action в каждом кадре, но кадров очень много, движение должно быть мягким. Как это сделать? Или может есть другой способ создания такой анимации? |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Положи этот код в первый фрейм.
k = 120; //количество секторов
r = 120; //радиус
xpos = 275;
ypos = 200;
this.createEmptyMovieClip("msec",1);
with(msec){
var ugol = 360/k;
lineStyle(0,0x000000,100);
beginFill(0x000000, 100);
for (t=0; t<((Math.PI/180)*ugol); t += 0.01) {
lineTo(r*Math.cos(t), r*Math.sin(t));
}
endFill();
_visible = false;
}
ID=setInterval(createIt,600);
function createIt(){
msec.duplicateMovieClip("msec"+i,i);
_root["msec"+i]._x = xpos;
_root["msec"+i]._y = ypos;
_root["msec"+i]._rotation = (360/k)*i;
i++;
if(i==k){
clearInterval(ID);
}
}
k = 24; //количество секторов
r = 120; //радиус
xpos = 275;
ypos = 200;
this.createEmptyMovieClip("msec",-1);
with(msec){
var ugol = 360/k;
lineStyle(0,0x000000,0);
beginFill(0x000000, 100);
for (t=0; t<((Math.PI/180)*ugol); t += 0.01) {
lineTo(r*Math.cos(t), r*Math.sin(t));
}
endFill();
msec._xscale = 0;
msec._yscale = 0;
}
MovieClip.prototype.scaleIt = function(){
this.onEnterFrame = function(){
this._xscale = this._yscale = this.scale;
if(this.scale<100){
this.scale++;
}
if(this.scale==100){this.onEnterFrame=null}
}
}
function colorise(c,coll){
myCol = new Color(c);
myCol.setRGB(coll);
}
ID=setInterval(createIt,1200);
function createIt(){
msec.duplicateMovieClip("msec"+i,i);
_root["msec"+i]._x = xpos;
_root["msec"+i]._y = ypos;
_root["msec"+i]._xscale = _root["msec"+i]._yscale = 0;
_root["msec"+i]._rotation = (360/k)*i;
_root["msec"+i].scaleIt();
doColorise();
i++;
if(i==k){
clearInterval(ID);
}
}
function doColorise(){
colorise(_root["msec"+i],10*(i+1)*256*255);
}
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) Последний раз редактировалось sergwizard; 31.08.2003 в 23:23. |
|
|||||
|
Огромное спасибо Сергей!
Но как я могу использовать этот ролик в виде маски? Проверьте пожалуйста что я не так сделал в этом .fla Зарание благодарен. |
|
|||||
|
Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
|
Держи.
Но, вообще-то, если ты хочешь все это только для маски, легче было бы рисовать просто окружность. В этом случае никакой маски не требуется.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный. (S.Wizard) |
|
|||||
|
Большое Спасибо!
![]() |
![]() |
Часовой пояс GMT +4, время: 17:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|