Inhalt von MoviClipContainer auf bestimmte Größe skalieren [Flash 10]
| 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:03 | Re1 | 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:23 | Re2 | 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:23 | Re3 | 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:39 | Re4 | 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:50 | Re5 | 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 Mitgliedern | 
|
| 25.08.2010, 23:15 | Re6 | 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:23 | Re7 | 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:23 | Re8 | 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:47 | Re9 | 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:16 | Re10 | 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 | |
| | Themen Ähnliche Beiträge zum Thema | 18.06.2009 - enemeneflash 17.12.2009 - GuentherLehman 10.06.2009 - besucher80 02.01.2010 - niquito12 |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|