Flashhilfe.de - Flash Community

Inhalt von MoviClipContainer auf bestimmte Größe skalieren [Flash 10]

Forum > ActionScript 3.0 > Inhalt von MoviClipContainer auf bestimmte Größe skalieren

 


AntwortenRegistrieren Seite1  

 25.08.2010, 17:09 
Beiträge: 8
Registriert: Aug 2010

Inhalt von MoviClipContainer auf bestimmte Größe skalieren
Hallo alle zusammen,

ich habe mit ActionScript ein Problem und komme einfach nicht weiter. Vielleicht habt ihr eine Lösung oder erste Ansätze für mich?

Folgendes möchte ich umsetzen:
In mein mc lade ich mit LoadMovi eine JPEG-Datei. Die Datei soll jedoch nicht 1:1 dargestellt werden, sondern in den Abmessungen einer bereits in Flash platzierten Grafik angepasst werden.
Ist die Grafik 300 x 400 groß, so muss die JPEG-Datei nach dem Einlesevorgang entsprechend auf 300 x 400 angepasst werden.

Das Skript sieht bisher so aus:
// Dateipfad in Variable schreiben
img = "http://meinedomain.de/pic_logo.gif";

// Dateipfad an Loader übergeben
cadre.loadMovie(img);

//warten bis alles geladen ist
this.onEnterFrame = function () {
            total = cadre.getBytesTotal ();
            geladen = cadre.getBytesLoaded ();
            prozent = Math.round ((geladen / total) * 100);
            preloader_txt.text = ":: Loading...." + prozent + "%";
            if (geladen >= total && geladen > 4 ) {
            delete this.onEnterFrame;

// hier wird die Größe der JPEG-Datei festgelegt
cadre._height = 200
cadre._width = 100
}
}

Nun fehlt mir der letzte Schritt: die fixen Werte 200 und 100 durch eine Variable austauschen.
Nämlich durch die Abmessungen einer auf der Bühne platzierten Grafik.

Habt ihr bereits so etwas umgesetzt? Im Forum habe ich bereits etwas gefunden, aber es will einfach nicht wie ich will. ;-)



LG
Tommy
 25.08.2010, 18:03Re1
Beiträge: 280
Registriert: May 2006

Meinst du sowas?

ActionScript:
1
2
cadre._height = deineAufderBühnePlazierteGrafik._height;
cadre._width = deineAufderBühnePlazierteGrafik._width;
h4 { position: -6ft; }
 25.08.2010, 18:23Re2
Beiträge: 8
Registriert: Aug 2010

Themenautor/in

Hi Stefan,

danke dir erst einmal für deine Hilfe. Genau so etwas habe ich bereits versucht.

Meine Grafik ist auf der Bühne platziert.
Die Grafik heißt sizer und ist als "Grafik" konvertiert.
Also habe habe ich den Code-Vorschlag:
cadre._height = deineAufderBühnePlazierteGrafik._height;
cadre._width = deineAufderBühnePlazierteGrafik._width;

entsprechend geändert:

cadre._height = sizer._height;
cadre._width = sizer._width;

Leider ohne Erfolg. Die Grafik wird weiterhin in der org. Größe dargestellt. Habe ich irgend etwas übersehen?!

LG
Tommy
Geändert von Coupe83 am 25.08.10 um 18:45 Uhr

 
nicht sichtbar bei eingeloggten Mitgliedern
 25.08.2010, 19:23Re3
Beiträge: 280
Registriert: May 2006

Vielleicht liegt's daran, dass es eine Grafik ist und kein MovieClip? Außerdem muss der MC bereits auf der Bühne sein, wenn das Bild fertig geladen wurde.
h4 { position: -6ft; }
Geändert von stefan0066 am 25.08.10 um 19:25 Uhr

 25.08.2010, 19:39Re4
Benutzerbild von KingKhong
Beiträge: 159
Registriert: Apr 2005

nur mal so am Rande, hier ist AS3. Vielleicht kann dir in AS2 besser geholfen werden.
----------------------------------------------
www.flashdevelop.de
 25.08.2010, 22:50Re5
Beiträge: 8
Registriert: Aug 2010

Themenautor/in

Die Vorgabe ist jedoch, dass das Skript in AS3 läuft.
Werde gleich morgen früh die Grafik in ein Moviclip ändern und nochmal testen.

Schönen Abend in die Runde
Tommy
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 25.08.2010, 23:15Re6
Benutzerbild von KingKhong
Beiträge: 159
Registriert: Apr 2005

Hatte da mal was gebaut unter http://www.flashdevelop.de/actionscript-3/bildergalerie-im-laufband.html in der Image.as, vielleicht hilft dir das weiter.

Hier der auszug, geändert auf dein Codesnippet. Jetzt musst dur nur noch dein Bild in AS3 Laden
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Großes Bild ggf. auf maximale größen herunter skalieren
var MAX_WIDTH:Number = sizer.width;
var MAX_HEIGHT:Number = sizer.height;
         if (MAX_WIDTH < _imgBig.width)
         {
              var f:Number = MAX_WIDTH  / cadre.width;
              cadre.width *= f;
              cadre.height *= f;
           }
         
         if (MAX_HEIGHT < _imgBig.height)
         {
              f = MAX_HEIGHT / cadre.height;
              cadre.width *= f;
              cadre.height *= f;
           }
----------------------------------------------
www.flashdevelop.de
Geändert von KingKhong am 26.08.10 um 10:27 Uhr

 26.08.2010, 09:23Re7
Beiträge: 8
Registriert: Aug 2010

Themenautor/in

Ich habe nun das Skript wie vorgeschlagen erweitert. Leider ohne Erfolg.

Mein Skript sieht nun wie folgt aus:
img = "http://www.google.de/intl/en_com/images/srpr/logo1w.png";
cadre.loadMovie(img);

this.onEnterFrame = function () {
            total = cadre.getBytesTotal ();
            geladen = cadre.getBytesLoaded ();
            prozent = Math.round ((geladen / total) * 100);
            preloader_txt.text = ":: Loading...." + prozent + "%";
            if (geladen >= total && geladen > 4 ) {
            delete this.onEnterFrame;

var MAX_WIDTH:Number = sizer.width;
var MAX_HEIGHT:Number = sizer.height;
         if (MAX_WIDTH < _imgBig.width)
         {
              var f:Number = MAX_WIDTH  / cadre.width;
              cadre.width *= f;
              cadre.height *= f;
           }
         
         if (MAX_HEIGHT < _imgBig.height)
         {
              f = MAX_HEIGHT / cadre.height;
              cadre.width *= f;
              cadre.height *= f;
           }

}
}

Habe ich irgend etwas übersehen? Die Grafik ist bereits auf der Bühne platziert, daran kann es also nicht liegen.

Hier könnt ihr euch mal meine fla Datei anschauen.
http://www.stepload.de/uploads/qjDFB,r2RYhfeHfooD0RbvwIHqG-dF3HF4sd,pGmzq/index.html
Das Google Logo soll in exakt der Größe dargestellt werden wie die schwarze Fläche/Grafik auf der Bühne.

Wäre cool wenn mir jemand den Fehler zeigen kann.

Merci
Tommy
Geändert von Coupe83 am 26.08.10 um 09:44 Uhr

 26.08.2010, 10:23Re8
Benutzerbild von KingKhong
Beiträge: 159
Registriert: Apr 2005

habe die restlichen _imgBig übersehen, die müssen noch cadre heißen. Zu dem hatte ich das für AS3 geschrieben, d.h. Variablen des MovieClips werden in AS3 ohne, in AS3 mit _ geschrieben.

Dann noch dein sizer, du hast in der Bibliothek dein MovieClip sizer genannt, wie er dort heißt ist nur für dich bestimmt und hat keine Auswirkung im ActionScript. AS benutzt lediglich die Verknüpfung.

Du hast den sizer auf die Bühne gelegt. Um ihn nun per AS anzusprechen musst du ihm noch ein Instanznamen geben. Also trägst du dort (unter Eigenschaften) den Namen ein, den du gerne benutzen möchtest. In diesem Fall also sizer, dann geht das auch.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
img = "http://www.google.de/intl/en_com/images/srpr/logo1w.png";
cadre.loadMovie(img);

this.onEnterFrame = function () {
              total = cadre.getBytesTotal ();
              geladen = cadre.getBytesLoaded ();
              prozent = Math.round ((geladen / total) * 100);
              preloader_txt.text = ":: Loading...." + prozent + "%";
              if (geladen >= total && geladen > 4 ) {
              delete this.onEnterFrame;
  var MAX_WIDTH:Number = sizer._width;
  var MAX_HEIGHT:Number = sizer._height;
           if (MAX_WIDTH < cadre._width)
           {
                var f:Number = MAX_WIDTH  / cadre._width;
                cadre._width *= f;
                cadre._height *= f;
             }
           
           if (MAX_HEIGHT < cadre.height)
           {
                f = MAX_HEIGHT / cadre._height;
                cadre._width *= f;
                cadre._height *= f;
             }
 
  }
}



und noch was habe ich vergessen zu sagen: Ich skaliere cadre proportional. Willst du den genau so groß haben wie sizer dann musst du natürlich
ActionScript:
1
2
cadre._height = sizer._height;
cadre._width = sizer._width

machen.
----------------------------------------------
www.flashdevelop.de
Geändert von KingKhong am 26.08.10 um 10:27 Uhr

 26.08.2010, 10:47Re9
Beiträge: 280
Registriert: May 2006

Ich würde es mit dem MovieClipLoader lösen, ist viel einfacher:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var my_mcl:MovieClipLoader = new MovieClipLoader ();
var myListener:Object = new Object ();

myListener.onLoadProgress = function (cadre:MovieClip, loadedBytes:Number, totalBytes:Number)
{
     var prozent = int(loadedBytes / totalBytes * 100 );
     preloader_txt.text = ":: Loading...." + prozent + "%";
};

myListener.onLoadInit = function (cadre:MovieClip)
{
     //trace (cadre._width + " " + cadre._height);
   cadre._width = sizer._width;
     cadre._height = sizer._height;
};

my_mcl.addListener(myListener);

my_mcl.loadClip ("http://www.google.de/intl/en_com/images/srpr/logo1w.png", cadre);


Müßtest nur noch Deinem sizer den Instanznamen 'sizer' geben.
h4 { position: -6ft; }
 26.08.2010, 14:16Re10
Beiträge: 8
Registriert: Aug 2010

Themenautor/in

Genau das wollte ich als Ergebnis. Danke!
Ich habe nun versucht eine SVG Datei zu laden. Das scheint wohl mit Flash nicht möglich zu sein, oder?


Lieben Gruß
Tommy
 28.08.2010, 14:18Re11
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6940
Wohnort: München
Registriert: Jan 2002

Bitte stell die Frage zu dem SVG in einen eigenen Thread da sie mit dem eigentlich Thema nichts zu tun hat.

Trotzdem schon mal ein Link zu Thema:
Actionscript SVG renderer

Ich schließe hier dann mal.
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de