tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
18
ZUGRIFFE
557
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Hallo ihr,

    also ich arbeite mit Flash MX 2004 Professional. Ich generiere TextAreas und Labels per ActionScript was auch prima funktioniert. Nun hab ich auch Bilder die ich darstellen möchte. Auch erstmal kein Problem. Vielleicht nicht schön gelöst, aber Bilder werden dargestellt. Ich habe die Bilder in einer Grösse zur Verfügung und möchte sie für meinen Film quasi in Breite und Höhe passend darstellen. Ich habe es mit folgendem Code probiert:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    if(aNode.nodeName == "Bild"){
       _root.createClassObject(Label, "Bild", 5);
       _root["Bild"].loadMovie("pics/meinBild.jpg");
       //_root["Bild"].setSize(997, 456);
       _root.Bild._width = 150;
       _root.Bild._height = 32;
       _root.Bild._x = 20;
       _root.Bild._y = 280;
    }//end if

    setSize hatte irgendwie gar keinen Effekt. in setSize steht die Grösse in der ich das Bild eigentlich haben will, aber dann ist mein Bild leider 10x so gross wie mein Content und es hat mit 150/32 ungefähr die Grösse, die ich brauch, aber es sollte ja eigentlich 997/456 sein. Ich frag mich nun, wie Flash skaliert also ob der das irgendwie in Abhängigkeiten berechnet oder welche Grössenangaben der benutzt bzw. muss ich in mein Script noch eine Skalierung einfügen und wenn ja welche? Weil so ist das irgendwie Schmou...

    Gruss
     

  2. #2
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    Du musst schon warten, bis das Bild komplett geladen ist. Warum? Nun, wenn Du loadMovie aufrufst und das Bild direkt danach skalierst, wird Deine Skalierung wieder überschrieben, sobald das Bild geladen ist.

    Beispiel:
    PHP-Code:
    // gehen wir davon aus, dass "bla" ein
    // leerer MC ist
    bla.loadMovie("blubb.jpg");
    this.onEnterFrame = function() {
        
    // Wenn Breite und Höhe größer 10 sind,
        // können wir annehmen, das das Bild geladen ist:
        
    if (bla._width 10 && bla._height 10) {
            
    bla._width 150// und gefahrlos...
            
    bla._height 32// ... neu skalieren!
            
    delete this.onEnterFrame;
        }

    Gruß
    .
     

  3. #3
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Mh das ist ja interessant...
    Woran könnte es liegen wenn beim angepassten Script diese Meldung kommt:

    Code :
    1
    2
    
    Keine Eigenschaft mit dem Namen 'onEnterFrame' vorhanden.
                    this.onEnterFrame = function() {

    Gruss
     

  4. #4
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    ... "this" zeigt nicht auf einen MovieClip.

    Um zu erkennen, worauf es bei Dir zeigt und was zu ändern wäre, müsste ich mehr (am besten die ganze Datei) sehen. Ich nehme an, Du führst das Ganze in einer Funktion aus; Ereignisfunktionen sind allerdings oft anderen Objekten zugeordnet.

    Gruß

    P.S.: vielleicht hilft schon ein simples:
    PHP-Code:
    _root.onEnterFrame = function() { 
    .
     

  5. #5
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Okay, wie immer blick ich Freitags am späten Nachmittag nicht mehr so ganz durch

    Ich habe ActionScript das File als Textdatei angehängt...

    Danke und Gruss
    Angehängte Dateien Angehängte Dateien
     

  6. #6
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    folgendes dürfte funktionieren:
    PHP-Code:
    var img _root["Bild"].createEmptyMovieClip("img"1);
    img.loadMovie("pics/meinBild.jpg");
    _root["Bild"].onEnterFrame = function() {
        if (
    this.img._width 10 && this.img._height 10) {
            
    // Hier skalieren
            
    delete this.onEnterFrame;
        }

    Gruß
    .
     

  7. #7
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Super jetzt funktioniert es!

    Danke schön!

    Schönes Wochenende!
     

  8. #8
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Hallo,

    nach langer langer Zeit und etwas umgeschriebener Code, funktioniert die Sache mit dem skalieren irgendwie nicht mehr. Das Bild wird geladen, aber es ist nicht skalierbar, dh er geht gar nicht erst in die Funktion innerhalb der skaliert werden soll...
    HILFE!
    Das
    Code :
    1
    
     _root.createClassObject(Label, "Bild", 5);
    passiert etwas weiter oben im Code (der ist etwas verschachtelt...)
    Dann frage ich in meiner XML Datei ab, wenn Knoten Bild vorhanden [...] und dann lade Bild und skaliere...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
     if(aNode.nodeName == "Bild"){
                _root.Bild._x = 30;
                _root.Bild._y = 245;
                var img = _root["Bild"].createEmptyMovieClip("img", 1);
                img.loadMovie("./pics/dummy.jpg");
                ladeBild(img);
            }//end if
        #########################       
        }//end function
        function ladeBild (givenImg){
            _root["Bild"].onLoad = function() {
                    if (this.givenImg._width > 10 && this.givenImg._height > 10) {
                        // Hier skalieren                       
                        _root["Bild"]._width = 940;
                        _root["Bild"]._height = 500;
                        
                    }//end if
                } //end function
        }//end ladeBild

    Ich hab die Funktion mal etwas ausgelagert in der Hoffnung er benutzt sie, aber Fehlanzeige... Ich habs auch mit "onEnterFrame" statt onLoad probiert, aber dann lande ich in einer Endlosschleife...

    Gruss
     

  9. #9
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    Code :
    1
    
    _root["Bild"].onLoad = function() {
    funktioniert nicht. Du musst schon mit einer onEnterFrame-Methode auf das Laden warten, wie ich es in meinem vorherigen Posting geschrieben habe.

    Ausserdem:
    Code :
    1
    
    var img = _root["Bild"].createEmptyMovieClip("img", 1);
    hier definierst Du img als lokale Variable - in der Funktion ladeBild ist sie nicht mehr bekannt. Mach es so, wie ich es gepostet habe, und führe das Vorladen (ohne Extra-Funktion) direkt nach dem loadMovie aus.

    Gruß
    .
     

  10. #10
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Guten Morgen,

    komischerweise habe ich deinen Code nochmal probiert, aber die Bilder lassen sich einfach nicht skalieren, sie werden angezeigt und platziert, aber die width und height ignoriert er einfach. Geht das skalieren nicht über?

    Code :
    1
    2
    3
    4
    5
    6
    
      if (this.img._width > 10 && this.img._height > 10) {
                        // Hier skalieren
                        _root["Bild"]._width = 940;
                        _root["Bild"]._height = 500;
                        
                    }//end if

    Aber das macht er nicht. Und das versteh ich nicht, und ich war mir sicher dass der Code schonmal funktioniert hatte...
    Weil entweder er skaliert mir das gar nicht (mit deinem Vorschlag ) und ohne die "if-Abfrage" in irgendwelchen komischen Angaben, so dass es definitiv nicht die Pixel sind die ich haben will?!

    Gruss
    Geändert von Orphelina (26.07.05 um 09:42 Uhr)
     

  11. #11
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    if (this.img._width > 10 && this.img._height > 10)
    ist this.img bei Dir überhaupt definiert? Ausserdem solltest Du dann auch this.img skalieren und nicht den gesamten Container.

    Poste bitte mal Deine Datei, denn hier im Dunkeln rumzustochern bringt nicht viel.

    Gruß
    .
     

  12. #12
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Ok im Anhang die Datei, ich habe alles in das ActionScript gepackt, der Aufruf findet in der fla* statt...

    Gruss
    Angehängte Dateien Angehängte Dateien
     

  13. #13
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    also, das kommt mir alles etwas komisch vor:
    • Du hast einen Container namens _root["Bild"] - aber das scheint eine Label-Instanz zu sein? Warum instanzierst Du das Bild in ein Label?

    • Wenn Du die Namen so fest vergibst, kannst Du nicht mehrere dieser Klasseninstanzen erstellen - die Objekte würden sich ja gegenseitig überschreiben.

    • Das Vorladen müsste eigentlich so aussehen:
      PHP-Code:
      img.loadMovie("pics/" +imgname);
      img.onEnterFrame = function() {
          if (
      this._width 10 && this._height 10) {
              
      this._width 787;
              
      this._height 482;
          }

      , aber da ich a) nicht weiß, was Du mit _root.Bild.unloadMovie(img) erreichen willst und mir b) einige Zweifel kommen, dass da sonst alles mit rechten Dingen zugeht, wird das wohl auch so nicht funktionieren.

    Kannst Du mal eine lauffähige Version (sprich: die .fla mit dem entsprechenden Aufruf der Klasse) posten?

    Gruß
    .
     

  14. #14
    Avatar von Orphelina
    Orphelina Orphelina ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Beiträge
    256
    Hallo,

    also zu a) wohin soll ich das Bild denn laden, bisher ging das mit dem Label ganz gut?
    Das mit den festen Namen hatte ich nicht bedacht geb ich zu, da ich immer davon ausgegangen bin nur ein Bild auf der Bühne zu haben...
    Das unloadMovie hab ich gesetzt dass das Bild auch wieder von der Bühne verschwindet, also wenn ich weiter rumklick quasi die Bühne "geleert" wird und ich neue Elemente auf die Bühne stellen kann... Oder gibt es einen Befehl der alles von der Bühne löscht?

    Gruss
     

  15. #15
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Ok, aber dann drängt sich mir die Frage auf, wozu Du ein Bild lädst und es dann sofort wieder entlädst? Immerhin befindet sich "img" in _root.Bild - und wird natürlich mitgelöscht.

    Wie gesagt: Meine Verwirrung mag daher rühren, dass ich mir kein Bild von der Situation machen kann, sprich: das Ding nicht in "Aktion" sehen kann.

    Gruß
    .
     

Ähnliche Themen

  1. Problem mit Actionscript
    Von click im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 02.03.07, 10:00
  2. Array ohne Grössenangabe
    Von cibal_gina im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 01.06.05, 18:17
  3. Button Problem mit ActionScript
    Von shroom im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 20.01.05, 20:28
  4. Actionscript Problem
    Von TheEM im Forum Flash Plattform
    Antworten: 11
    Letzter Beitrag: 25.07.03, 12:06
  5. grössenangabe bei Bildern
    Von suid im Forum HTML & XHTML
    Antworten: 4
    Letzter Beitrag: 16.04.02, 16:09