Zurück   Flashforum > Flash > ActionScript > Softwarearchitektur und Entwurfsmuster

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-08-2004, 09:41   #1 (permalink)
 
Registriert seit: Dec 2003
Beiträge: 202
movieClipLoader in klasse funtioniert nicht bei mehreren instanzen der klasse

ich habe eine klasse geschrieben, welche ein bild laden und dieses dann in einer bestimmten größe darstellen soll. das funktioniert auch wunderbar wenn ich eine instanz davon erzeuge. wenn ich aber mehrere instanzen erzeuge funktioniert es leider überhaupt nicht mehr, und ich komme nicht dahinter warum?????

hier einmal meine klasse

PHP-Code:
//
class ImageWidget {
    private var 
file:String;
    
//
    
private var container_mc:MovieClip;
    private var 
load_mc:MovieClip;
    private var 
bg_mc:MovieClip;
    private var 
border_mc:MovieClip;
    private var 
target_mc:MovieClip;
    private var 
mcl:MovieClipLoader;
    
//
    
public var iconWidth:Number 90;
    public var 
iconHeight:Number 90;
    
//
    
private var x:Number;
    private var 
y:Number;
    
    
//constructor
    
public function ImageWidget (target:MovieClipfileToLoad:StringxPos:NumberyPos:Number) {
        
target_mc target;
        
file fileToLoad;
        
//
        
xPos;
        
yPos;
        
//
        
init ();
    }
    
    
//
    
private function init () {
        
container_mc target_mc.createEmptyMovieClip("container"target_mc.getNextHighestDepth())
        
container_mc._x x;
        
container_mc._y y;
        
//
        
buildBackground ();
        
//
        
load_mc container_mc.createEmptyMovieClip("load"container_mc.getNextHighestDepth())
        
//
        
buildBorder ();
        
buildMovieClipLoader ();
    }
    
    
//
    
private function buildBackground () {
        
bg_mc container_mc.createEmptyMovieClip("bg"container_mc.getNextHighestDepth())
        
bg_mc.beginFill (0xcccccc)
        
bg_mc.moveTo (00);
        
bg_mc.lineTo (iconWidth0);
        
bg_mc.lineTo (iconWidthiconHeight);
        
bg_mc.lineTo (0iconHeight);
        
bg_mc.lineTo (00);
        
bg_mc.endFill ();
    }
    
    
//
    
private function buildBorder () {
        
border_mc container_mc.createEmptyMovieClip("border"container_mc.getNextHighestDepth())
        
border_mc.lineStyle(00x000000)
        
border_mc.lineTo(iconWidth,0)
        
border_mc.lineTo(iconWidth,iconHeight)
        
border_mc.lineTo(0,iconHeight)
        
border_mc.lineTo(0,0)
    }
    
    
//
    
private function buildMovieClipLoader () {
        
mcl = new MovieClipLoader ();
        
mcl.addListener(this);
        
mcl.loadClip (fileload_mc)
    }
    
    
//
    
public function onLoadStart (clip:MovieClip) {
        
trace ("load has started")
    }
    
//
    
public function onLoadInit (clip:MovieClip) {
        
//
        
setDisplaySize (iconWidthiconHeight)
    }
    
//
    
public function onLoadProgress (clip:MovieCliploadedBytes:NumbertotalBytes:Number) {
        var 
percent:Number = (loadedBytes/totalBytes)
        
bg_mc._width iconWidth*percent
        
//trace (percent)
    
}
    
    
//
    
public function setDisplaySize (w:Numberh:Number):Void {
        var 
scale:Number;
        var 
tempW:Number load_mc._width;
        var 
tempH:Number load_mc._height;
        
// trace (tempW)
        
var xScale:Number w/tempW 100;
        var 
yScale:Number h/tempH 100;
        
//
        
if (xScale yScale) {
            
scale yScale
        
} else {
            
scale xScale
        
}
        
load_mc._xscale load_mc._yscale scale;
        
// center the media clip
        
load_mc._x container_mc._width/load_mc._width/2;
        
load_mc._y container_mc._height/load_mc._height/2;
    }

das ganze wird dann von der timeline folgendermaßen aufgerufen:

PHP-Code:
function mediaWidget () {
    var 
node_arr = new Array ("media/RenateHattinger01.jpg""media/RenateHattinger02.jpg")
    var 
maxNum:Number node_arr.length;
        for (var 
i=0i<maxNumi++) {
            var 
item = new ImageWidget (thisnode_arr[i], i*1000);
        }
}

mediaWidget () 
wenn das array "node_arr" nur aus einem element besteht funktioniert es einwandfrei .... sonst gehts drunter und drüber ....

kan mir da jemand bitte helfen?

Geändert von bryan.fury (03-08-2004 um 09:44 Uhr)
bryan.fury ist offline   Mit Zitat antworten
Alt 03-08-2004, 10:52   #2 (permalink)
MiM
Neuer User
 
Registriert seit: Sep 2001
Ort: Neckarsulm
Beiträge: 273
Was wir beim Überfliegen auffällt ist folgendes:
Der MovieClip Name ist immer der gleiche, du änderst nur die Tiefe. Du solltest den Name auch universell machen. Also z.B. einfach die Tiefe des MCs an den Namen dranhängen.
Bsp.:
var depth:Number = target_mc.getNextHighestDepth();
createEmptyMovieClip("container_" + depth, depth);
MiM ist offline   Mit Zitat antworten
Alt 03-08-2004, 11:24   #3 (permalink)
 
Registriert seit: Dec 2003
Beiträge: 202
auweia ...

wenn man mit dummheit geld verdienen könnte.

danke MiM
bryan.fury ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele