Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Реящий флаг. (http://www.flasher.ru/forum/showthread.php?t=89817)

Светка Иванова 24.12.2006 17:41

Реящий флаг.
 
Вложений: 1
Привет!
Подскажите пожалуйста, как мне заставить этот флаг "гордо реять" :) ну или хотябы реалистично трепыхаться.

А то у меня получается, что он только едет и дергается...
Помогите пожалуйста :)

pelipas 24.12.2006 17:50

лучше сделай новый...этот безнадежен)))

Светка Иванова 24.12.2006 18:10

Ой.
 
Ой, блин, ну как-же так? или Вы это про клипвобще? там есть такая картиночка с флагом, я вот подумала если её заставить двигаться не по прямой, а зигзагом, то возможно, что-то и получится... Вы как думаете?

Светка Иванова 24.12.2006 18:28

Чуть подправила.
 
Вложений: 1
Вот! Я тут чуть подправила... может теперь этот флан будет не так сильно безнадежен... Ну пожалуйста мне очень хочется сделать именно этот флаг или что-то похожее.

etc 24.12.2006 19:49

http://flasher.ru/forum/showthread.php?t=69576

Светка Иванова 25.12.2006 09:19

Здорово! а можо объяснить теперь это для блондинки?
 
А может ктонить объяснить теперь это для блондинки?

И как это применимо к в моем флажке?
Пожаааалуйста, ну покажите мне как это делается... я обещала до среды сдать контрольную...

Код:

/***************************************
        автор: silin
****************************************/       

MovieClip.prototype.sinFly=function(){
        var b=this._parent
        this.vx += (this.ix - this._x)/24
        this.vy += (this.iy - this._y)/24
        this._x += this.vx*=0.85;
        this._y += this.vy*=0.85;
        this.iy= this._name==5? b[3].iy+b.h : this.y0+0.05*b.h*(Math.sin(b.age/5+Math.PI/2.3*this._name))
        this.ix=this.x0+0.025*b.w*(Math.sin(b.age/7+Math.PI/2*this._name))
}

///////////////////////////////////
MovieClip.prototype.addFlag=function(s,link){
        var width=this._width,ws=width/s,height=this._height;
        var prop={_x:this._x,_y:this._y,_rotation:this._rotation}
        var f=this._parent.createEmptyMovieClip(this._name,this.getDepth());//заменяем пустым
        for(var i in prop) f[i]=prop[i];
       
        for (var i=0;i < s;i++)        {//добавили нарезку
                var p=f.attachMovie(link,i,i,{x:i*width/s});
                if(f._rotation&&!i){width=p._width;        height=p._height;ws=width/s;}//если повернут, то width&height другие
                var m = p.createEmptyMovieClip('m',1);
                m.beginFill(0);
                m.moveTo(ws*i,0);m.lineTo(ws*(i+1)+0.5,0);m.lineTo(ws*(i+1)+0.5,height);m.lineTo(ws*i,height);
                m.endFill();
                p.setMask(m);
        }
        /////////отблеск (он же потом как маска пойдет)///////////////////////////////////////////////
        var w=0.96*width;//отступы
        var h=0.96*height;
        var xy=[]//массив для исходных координат
        for(var i=0;i<4;i++)xy.push({x:i*w/3,y:0})//4 по верхней кромке
        xy[4]={x:w,y:h/2}//правая
        for(var i=0;i<4;i++)xy.push({x:w-i*w/3,y:h})//4 по низу
        xy[3].c=xy[5].c=1;        //метки углов       
        var b=f.createEmptyMovieClip(100,100);
        b._y=0.01*h;
        b.w=w
        b.h=h
        b.len=xy.length
        b.age=random(21);
        for (var i=0; i<b.len; i++) {//мувики для контроля точек
                var p=b.createEmptyMovieClip(i,i);
                p.x0=p.ix=p._x=xy[i].x
                p.y0=p.iy=p._y=xy[i].y;
                p.vx=p.vy=0;
                p.c=xy[i].c
                if(i&&i<b.len-1) b[i].onEnterFrame=sinFly;
        }
        b.onEnterFrame=function(){
                this.age++
                this.clear();
                var colors=[],alphas=[],ratios=[0]
                for(var i=0;i<5;i++) {
                        alphas[i]=20+7*Math.sin(this.age/7+i)
                        colors[i]=i%2 ? 0xcccccc : 0x333333
                        if(i)ratios[i]=this[i]._x/w*196
                }
                ratios[4]=255
                  var fi=Math.PI/2+Math.atan2(this[3]._y-this[5]._y,(this[3]._x-this[5]._x)/2)
                  var matrix = {matrixType:"box", x:0, y:0, w:width, h:h, r:fi};
                  this.beginGradientFill("linear", colors, alphas, ratios, matrix);
                this.moveTo( this[0]._x, this[0]._y);
                for (var i=0;i<this.len-1;i++){
                        this.curveTo(this[i]._x, this[i]._y, (this[i]._x + this[i+1]._x)/2, (this[i]._y + this[i+1]._y)/2)
                        if(this[i+1].c) this.lineTo(this[i+1]._x,this[i+1]._y)
                }
                this.lineTo(this[this.len-1]._x,this[this.len-1]._y)
                this.endFill()
        }
        ////////////////двигаем нарезку////////////////////////////
        f.onEnterFrame=function(){
                var w=width/s,n=[0],dy=[0],r=[0]
                for(var i=1;i<3;i++)r[i]=b[i]._x;
                r[3]=width;
                for(var i=1;i<4;i++){
                        n[i]=Math.floor(r[i]/w);
                        dy[i]=(b[i]._y-b[i-1]._y)/(n[i]-n[i-1])
                        for(var j=n[i-1];j<n[i];j++){
                                this[j]._y=b[i-1]._y+(j-n[i-1])*dy[i]
                        }
                }
                for(var i=1;i<3;i++)r[i]=b[8-i]._x;
                for(var i=1;i<4;i++){
                        n[i]=Math.floor(r[i]/w);
                        dy[i]=(b[8-i]._y-b[9-i]._y)/(n[i]-n[i-1])
                        for(var j=n[i-1];j<n[i];j++){
                                var by=b[9-i]._y+(j-n[i-1])*dy[i]
                                this[j]._yscale=(by-this[j]._y)/h*100
                        }
                }
                this.setMask(b.duplicateMovieClip('m',101))//кладем под маску для красивости
        }
}


/////////////////////////////////////////////////////////////////////

pic.addFlag(24,'flag');//flag - linkage id в библиотеке
for(var i=1;i<9;i++) {
        this[i].gotoAndStop(i)
        this[i].onRelease=function(){ //меняем содержимое
                for(var j=0;j<24;j++)pic[j].gotoAndStop(this._name)
        }
}

[iNils: Для оформления своего кода, надо использовать теги [code][/code]]

CorC 25.12.2006 10:11

Вложений: 1
а вот еще и с тенью :)

Светка Иванова 25.12.2006 10:40

хм...
 
С этого я и начинала... пустить картинку по маске, но что-то у меня не срастается ничего.

Товарищи мужчины ну объясите пожалуйста как использовать этот код, применительно к моей картинке. Очень Вас прошу!

etc 25.12.2006 11:09

Лучше переделать то, что есть. Там в либе лежит мувик, в нём в каждом кадре отдельный флаг. Там надо просто нарисовать свой и всё.

А вообще, кажется iNils показывал пример флага, который работает с DisplacementMapFilter, там всё проще. Тему я искал, но что-то не нашёл…

Светка Иванова 25.12.2006 18:13

Попробую
 
Сейчас попробую.


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

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