Adobe Flash Anleitung | Dynamische Rahmen zeichnen, Prozentpreloader & PopUp

S

sevY

Hi zusammen,

ich hab bei einem aktuellen Job das Problem gehabt, das ich dynamisch geladene Bilder mit einem weißen Rand versehen wollte. Nur die Bilder waren immer verschieden breit.

Also habe ich einen Prototype entwickelt.

PHP:
//Actionscript 1.0
MovieClip.prototype.drawFrame=function(x1,y1,x2,y2,lineSize,colour,alpha)
 	{ 
	this.lineStyle (lineSize, colour, alpha);
    with(this)
		{ 
        lineTo(x2, y1); 
        lineTo(x2, y2); 
        lineTo(x1, y2); 
        lineTo(x1, y1); 
        } 
	}

Anwendungsbeispiel:

Es werden Bilder mittels des loadVars Objektes via PHP aus MySQL ausgelesen. Eine for Schleife instanziert die Bilder und setzt Sie mit einem Abstand von 30px nebeneinander. Ist ein großes Bild für das kleine Previewbild vorhanden, wir eine Funktion im onReleaseHandler als Eigenschaft des instanzierten MovieClips definiert.

Dazu muss selbstverständlich im <head> der Datiei, die diese swf beinhaltet, entsprechende Javascript Funktion PopUp(); definiert sein.

Netter Nebeneffekt des Scripts ist es, das die Bilder mittels einer Prozentanzeige preloaded werden können.


PHP:
//Actionscript 1
for(var j=0;j<this.repeats;j++)
    {
    var images=image_box.attachMovie('images','images'+j,j);
    images.image=eval('this.image_'+j);
    images.image_max=eval('this.image_max_'+j);						
    images.frame.loadMovie(images.image);
    images.percent_field.text=0;
    images.sign_field.text='%';
    images.onEnterFrame=function()
        {
        var current=this.frame.getBytesLoaded()
        var total=this.frame.getBytesTotal()
        var percent=Math.round((current/total)*100);						
        if(percent>0 && percent!=100)
            {
            this.percent_field.text=percent;
            }
        if(this.frame.getBytesLoaded()==this.frame.getBytesTotal() && this.frame.getBytesLoaded()>4)
            {
            this.percent_field.text='';
            this.sign_field.text='';
            this.frame.drawFrame(0,0,this.frame._width,this.frame._height,3,'0xffffff',100);
            if(this.image_max!='')
                {
                this.onRelease=function()
                    {
                    getURL("javascript:popup('"+this.image_max+"');");
                    }
                }
            delete this.onEnterFrame;
            }
        }
        images._x=base_x+(j*(this.frame._width+30));
        images._y=base_y;
    }


Enjoy.

Yves
 
Zurück
Oben Unten