Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-07-2004, 22:55   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
attachSound() überschreibt letzte Ebene.

Hi zusammen,


ich habe folgendes Problem.

In meinem Flashfilm liegt im ersten Frame ein tierisch langes Script, welches aus MySQL via PHP mit ner Menge von attachMovie() und createEmptyMovieClip() quasi den ganzen Content des Films instanziert. Dabei lege ich die Inhalte auf mehrere Ebenen.

Nun habe ich direkt auf der Bühne noch einen Clip, der die Soundsteuerung darstellt.
Dort ist das simple Script

PHP-Code:
//Actionscript 1.0
_global.value=0;
_global.loop=new Sound();
_global.loop.attachSound('voiceloop');
_global.loop.setVolume(_global.value);
_global.loop.start(0,999); 
Das den Sound instanziert und vorher ein Soundobjekt erstellt.

In der Lib habe ich dem Sound eine Linkage ID gegeben und Export for Actionscript gewählt.

Soweit ganz easy, funktioniert auch alles… ist auch gar nicht schwer

Nur was mir auffiel ist, das die Rahmen, die ich um die dynamisch geladenen Bilder ziehe, verschwinden.

Entferne ich die Linkage ID des Sounds aus der Lib dann sind die Rahmen wieder da.

Ich nehme also an, das der Sound auf das Level der Rahmen attached wird.

Seltsame eigentlich…

Für alle die sich das Script antun wollen, das die ganze Geschichte am Anfang instanziert:

PHP-Code:
//Actionscript 1.0

//Nur die wichtigsten Teile…
//(…)
            
element.onRelease=function()
                {    
                
this.group.switchSelection(this);
                
_root.animations.voisis.removeMovieClip();
                var 
container=_root.content.createEmptyMovieClip('container',3);                
                var 
transfer=new LoadVars()
                
transfer.object=this;
                
transfer.filetype='image';
                
transfer.root_id=this.id;    
                
transfer.sendAndLoad('query.php'transfer'POST');
                
transfer.onLoad=function()
                    {
                    
                    var 
imagepane=container.attachMovie('FScrollPaneSymbol','imagepane',1);
                    
imagepane._x=-100;
                    
imagepane._y=-172;
                    
imagepane.width=380;
                    
imagepane.height=189;
                    var 
image_box=container.createEmptyMovieClip('image_box',2);
                    
                    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>&& 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*228);
                        
images._y=base_y;

                        }
                    
imagepane.setScrollContent(image_box);
                    
imagepane.setVScroll=false;
                    
imagepane.setHScroll=auto;
                    
delete this.object['transfer'];
                    }
//(…)


//Prototype für drawFrame

MovieClip.prototype.drawFrame=function(x1,y1,x2,y2,lineSize,colour,alpha)
     { 
    
this.lineStyle (lineSizecolouralpha);
    
with(this)
        { 
        
lineTo(x2y1); 
        
lineTo(x2y2); 
        
lineTo(x1y2); 
        
lineTo(x1y1); 
        } 
    }; 

Meine Frage ist nun, wie ich den Sound anders attachen kann…

Ich habe schon als Funktionparameter bei new Sound(); einmal this probiert, um als Ziel direkt den Clip auf der Bühne zu wählen und auch versucht, mit createEmptyMovieClip() einen Container auf Ebene 250 zu legen und diesen dann als Ziel anzugeben.

Klappt beides nicht.


Was mach ich falsch?


Ich habe mir mal im OOP das Script von Nettrek angesehen… ist aber zu überdimensioniert für diese Aufgabe.

Ich will nur einen Sound attachen, dessen Soundobjekt ich global definiere, um dann auf die on/off Buttons eine simple Funktion zum Fade in/out zu legen.

Klappt soweit auch alles prima, nur eben das die Rahmen verschwinden, wenn der Sound eine Linkage ID hat und instanziert wird.


Liebe Grüße

Yves
  Mit Zitat antworten
Alt 21-07-2004, 01:00   #2 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Ok,

nach eingänglicher Suche hier im Forum hab ich mir erst gar nicht bewusste Problem mit dem Preloading von „attached to first frame“ sounds entdeckt und behoben.

Der Sound ist jetzt also nur mit „Export for Actionscript“ versehen und liegt im 2. Frame. Laut Rusty kann man auch Dinge, die schon in der Timeline auf der Bühne liegen attachen. Stimmt auch

Anyway… hat der Sound in der Lib eine linkageID, dann werden die Rahmen nicht mehr per Script gezeichnet. Übrigens egal wo ich die Rahmen drumherum ziehe.

Hat der Sound keine LinkageID, dann wird er folglich nicht korrekt attached und die Rahmen sind wieder da.

Was nun?



Liebe Grüße

Yves
  Mit Zitat antworten
Alt 21-07-2004, 01:35   #3 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Auch das geht nicht… sound spielt ab und lässt sich kontrollieren… jedoch keine dynamisch gezeichneten Frames mehr…

Kann man das vielleicht mit einem Sound.prototype lösen? Eigentlich ist das doch quasi das gleiche in lila…

PHP-Code:

//Actionscript 1.0

_global.value=0;
_global.loop=_root.content.createEmptyMovieClip('loopBox',255);
_global.loop=new Sound(_global.loop);
_global.loop.attachSound('voiceloop');
_global.loop.setVolume(_global.value);
_global.loop.start(0,999);
this.soundControl('in');
this.stop(); 

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 21-07-2004, 14:10   #4 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Ich werd verrückt… glaub ich…

Noch nicht einmal Zeitleisten Mucke ist möglich.

Die dynamischen gezeichneten Rahmen vertragen sich nicht mal mit nem Sound in der Zeitleiste…

Kann das sein das das ein Flash Bug ist?


Liebe Grüße

Yves
  Mit Zitat antworten
Alt 21-07-2004, 14:14   #5 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
schöner monolog
kannst du mal ne problemreduzierte fla posten?

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 21-07-2004, 17:16   #6 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi Deluxe,

sehr gerne tue ich das!!!


Hier zunächst das Script in der reduzierten Fla.

PHP-Code:
//Actionscript 1.0


MovieClip.prototype.drawFrame=function(x1,y1,x2,y2,lineSize,colour,alpha)
     { 
    
this.lineStyle (lineSizecolouralpha);
    
with(this)
        { 
        
lineTo(x2y1); 
        
lineTo(x2y2); 
        
lineTo(x1y2); 
        
lineTo(x1y1); 
        } 
    };
    
                    
var 
imagepane=_root.attachMovie('FScrollPaneSymbol','imagepane',1);
imagepane._x=0;
imagepane._y=0;
imagepane.width=380;
imagepane.height=200;

var 
image_box=_root.createEmptyMovieClip('image_box',2);

for(var 
j=0;j<10;j++)
    {
        
    var 
images=image_box.attachMovie('images','images'+j,j);
    
images.image='test.jpg';                        
    
images.frame.loadMovie(images.image);
    
    
images.onEnterFrame=function()
        {                        
        if(
this.frame.getBytesLoaded()==this.frame.getBytesTotal() && this.frame.getBytesLoaded()>4)
            {
            
this.frame.drawFrame(0,0,this.frame._width,this.frame._height,3,'0xffffff',100);
            
delete this.onEnterFrame;
            }
        }
        
    
images._x=base_x+(j*228);
    
images._y=base_y;
    
    }
    
imagepane.setScrollContent(image_box);
imagepane.setVScroll=false;
imagepane.setHScroll=auto;



var 
audio=new Sound(this);
audio.attachSound('voiceloop');
audio.setVolume(100);
audio.start(0,999);



this.stop(); 

So wie das Script dort oben steht, funktioniert das Zeichnen der dynamischen Rahmen nicht mehr.

Es reicht nicht das SoundObjekt auszukommentieren, man muß die LinkageID des Sounds aus der Lib entfernen und(!) sogar das auf Event=Stop stehende Audioelement in der Zeitleiste entfernen (um das Problem mit dem Preloader zu umgehen dort platziert… alternativ für export to 1st Frame).

Hab euch extra dafür 2 Fla gemacht, einmal mit beiden, wo der Sound funktioniert und das Drawing nicht, und einmal ohne Sound, wo das Drawing klappt.

Das einzige was geht, habe ich herausgefunden, ist loadSound(); . Kommt aber nicht in Frage, da der Sound mit dem ganzen Film preloaded werden soll.

Bin mal gespannt was ihr dazu sagt.

Was mach ich wenn es keine Lösung gibt?

Chef sagte… geht nicht, gibts nicht.

Debug.zip, 708KB (2 Fla/SWF, 1 Testbild)




Liebe Grüße

Yves
  Mit Zitat antworten
Alt 21-07-2004, 17:33   #7 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Seid ihr down mit der Fla

Ich hab gerade einfach mal getestet, in eine 2. Fla das Soundobjekt zu stopfen und dann deren swf mittels loadMovie in die erste zu laden, in der auch die Rahmen gezeichnet werden… das geht…

Wenn man das tatsächlich so realisieren muss, dann frickel ich proforma schon mal den 2. Preloader…


Nie isser da wenn ihn mal einer braucht…
  Mit Zitat antworten
Alt 03-08-2004, 16:41   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2004
Beiträge: 3
Problem mit attacheSound

Bei mir funktioniert diese attacheSound Sache überhaupt nicht.
In der Bibliothek liegt ein WavSound mit ID zum exportieren. Das Soundobjekt ist auch angelegt und wird mit attachsound gefüllt aber es ist nichts zu hören.

_global.backsound = new Sound();
_global.backsound.attachSound('back_sound');
_global.backsound.start(0, 9999);

Was mach mich verkehrt?
target_8 ist offline   Mit Zitat antworten
Alt 03-08-2004, 17:15   #9 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von target_8
Was mach ich verkehrt?
Groß- und Kleinschreibung bei der ID beachtet?

Export to first Frame gewählt bzw. den Sound irgendwo mit Event Stop auf die Bühne gelegt?

Ansonsten probier mal das Soundobjekt mit Zeitleistenangabe zu versehen und als Loopfunktionsparameter mal nicht eine so große Zahl… Angenommen dein Sound ist 10sek, macht bei 999 = 9999 Sekunden. 3600 Sekunden hat eine Stunde. Also läuft der Sound dann knapp 3 Stunden. Wer dann noch auf der Seite ist, hat n ordentliches Problem

PHP-Code:
//Actionscript 1.0
_global.backsound = new Sound(this);_global.backsound.attachSound('back_sound');
_global.backsound.start(0999); 

Yves
  Mit Zitat antworten
Alt 08-08-2004, 14:57   #10 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Ist dein Problem gelöst?

Hat jemand eine Ahnung oder Idee zu meinem Ursprungsproblem?

Yves
  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 14:39 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele