Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-08-2005, 18:31   #1 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 6
Movieclip skaliert unregelmäßig beim AS-Skalieren

Hallo,

ich möchte einen Movieclip (der Text beinhaltet, aber das ist wohl egal) per AS skalieren. Leider sieht man deutlich, wie ._xscale und ._yscale nacheinander berechnet werden :-( Es ruckelt schrecklich. Unabhängig davon, mit wieviel fps der Film läuft oder wie klein die Skalierungsschritte sind. Was tun? Hier ist das AS
ratlose grüße
ActionScript:
  1. function laden() {
  2.     this.attachMovie("zitate", "zitate", 0);;
  3.     initPosition();
  4.     moveIt();
  5.     function initPosition() {
  6.         var obj = zitate;
  7.         obj._x = 18;
  8.         obj._y = 140;
  9.         obj._xscale = 10;
  10.         obj._yscale = 10;
  11.     }
  12.     function scaleText() {
  13.         var obj = zitate;
  14.         if (obj._xscale < 100) {
  15.             ((obj._xscale += 3)&&(obj._yscale += 3));
  16.            
  17.         }
  18.     }
  19.  
  20.     function moveIt() {
  21.         zitate.onEnterFrame = function() {
  22.             scaleText();
  23.         };
  24.     }
  25. }
marta_s ist offline   Mit Zitat antworten
Alt 28-08-2005, 18:48   #2 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Hallo marta,

Bis auf das das der Code-Haufen erkennen läßt, was passieren soll, ist eine Neustrukturierung des Scripts sinnvoll. Allse Funktionen, innerhalb der Funktion sind unnütz, bzw. können zusammengefaßt werden. Frage:

Soll die Funktion wiederverendbar sein, oder nur einmal, für den zu attachenden Mc gelten?
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.
shorty ist offline   Mit Zitat antworten
Alt 28-08-2005, 19:02   #3 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 6
Hallo shortybmc,

die Funktion wird nur einmal verwendet - aber darum geht nicht. Ebensowenig wie darum, dass ich den Code nach allen möglichen Vorstellungen umstrukturieren kann. Das ist nicht das Problem und das löst nicht das Problem: die zeitliche "Nacheinanderberechnung" von xscale und yscale ist im Film sichtbar. Der Film soll aber gleichmäßig aufskalieren. Was mache ich falsch?
marta_s ist offline   Mit Zitat antworten
Alt 28-08-2005, 19:13   #4 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Lightbulb

Quick & Dirty (mit Beispiel im Anhang):
PHP-Code:
this.stop();
// ---------------------------------------------------------------------------
function fncShowZitat() {
    var 
scaleSpeed:Number 10;
    
_root.attachMovie('zitate''zitate'_root.getNextHighestDepth());
    
with (_root.zitate) {
        
_x 150;
        
_y 100;
        
_xscale 0;
        
_yscale 0;
        
onEnterFrame = function () {
            
_xscale += scaleSpeed;
            
_yscale += scaleSpeed;
            if (
_xscale>=100 || _yscale>=100) {
                
_xscale 100;
                
_yscale 100;
                
delete this.onEnterFrame;
            }
        };
    }
}
fncShowZitat(); 
Die Zielangabe "_root" ersetzt du einfach durch deinen Pfad... (vegiss aber die Angabe in der with anweisung nicht )

EDIT: so ist's einfacher, mußt nur im Parameter den Ziel MC angeben, und fertig...
PHP-Code:
this.stop();
// ---------------------------------------------------------------------------
function fncShowZitat(target:MovieClip) {
    var 
scaleSpeed:Number 10;
    
target.attachMovie('zitate''zitate'target.getNextHighestDepth());
    
with (target.zitate) {
        
_x 150;
        
_y 100;
        
_xscale 0;
        
_yscale 0;
        
onEnterFrame = function () {
            
_xscale += scaleSpeed;
            
_yscale += scaleSpeed;
            if (
_xscale>=100 || _yscale>=100) {
                
_xscale 100;
                
_yscale 100;
                
delete this.onEnterFrame;
            }
        };
    }
}
// ---------------------------------------------------------------------------
fncShowZitat(_root); 
Ik hoffe, das war nicht am Thema vorbei?


shorty
Angehängte Dateien
Dateityp: zip Zitate.zip (6,5 KB, 14x aufgerufen)
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shortybmc (28-08-2005 um 19:21 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 28-08-2005, 20:51   #5 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 6
Also erstmal muss ich ja wohl ungern zugeben, dass dein Code wirklich schöner ist als meiner. Deshalb hab ich ihn auch einfach kopiert... Naja, und dann hab ichs ausprobiert: läuft wirklich gut. Aber leider nicht mit meinem Beispiel. Ich habe "der Einfachkeit halber" nicht geschrieben, dass der Text nicht im .fla steht, sondern eingelesen wird. Mmhhh. Dabei ist das offensichtlich DAS Problem. Ich habe deinen Quelltext in mein Beispiel gesetzt und noch einen Text einlesen lassen, und siehe da: es ruckelt wieder!

Bedeutet das jetzt, ich kann dynamisch eingelesene Texte nicht skalieren? Und: wieso bloß ruckelt das?

Ich schick auch mal mein Beispiel mit - hoffentlich klappt das, mach ich zum ersten mal :-)

Gruß M.

PS: Ich versuche nachher mal mit der Textfeld-Klasse zu arbeiten. Vielleicht läuft es ja da runder, hab ich halt auch noch keine Erfahrungen mit.
Angehängte Dateien
Dateityp: zip zitate2.zip (8,4 KB, 5x aufgerufen)

Geändert von marta_s (28-08-2005 um 20:55 Uhr)
marta_s ist offline   Mit Zitat antworten
Alt 28-08-2005, 21:15   #6 (permalink)
notzucht
 
Benutzerbild von shorty
 
Registriert seit: Nov 2003
Ort: Potsdam
Beiträge: 2.939
Quick & Dirty pt.2

Diesen Begriff streichst Du am besten aus deinem Kopf: loadVariables(); und ersetzt ihn durch: LoadVars();
*aber daran liegts nicht

Bei mir läufts auch mit dynamischem Text rund.
PHP-Code:
this.stop();
// ---------------------------------------------------------------------------
function fncShowZitat(target:MovieClip) {
    var 
scaleSpeed:Number 2;
    
target.attachMovie('zitate''zitate'target.getNextHighestDepth());
    
target.zitate._visible false;
    var 
lvContent:LoadVars = new LoadVars();
    
lvContent.onLoad = function() {
        
with (target.zitate) {
            
txtOutput.text this.content;
            
_x 150;
            
_y 100;
            
_xscale 0;
            
_yscale 0;
            
_visible true;
            
onEnterFrame = function () {
                
_xscale += scaleSpeed;
                
_yscale += scaleSpeed;
                if (
_xscale>=100 || _yscale>=100) {
                    
_xscale 100;
                    
_yscale 100;
                    
delete this.onEnterFrame;
                }
            };
        }
    };
    
lvContent.load('zitate.txt')
}
// ---------------------------------------------------------------------------
fncShowZitat(_root); 
Tipp: Keine krummen Werte (1.5)
Angehängte Dateien
Dateityp: zip Zitate.zip (13,4 KB, 9x aufgerufen)
__________________
.
Flex in a week | Viertel vor halb nach Vollmond | ^^°.°^^ | Waltz with Bashir
.

Geändert von shortybmc (28-08-2005 um 21:32 Uhr)
shorty ist offline   Mit Zitat antworten
Alt 29-08-2005, 14:58   #7 (permalink)
Neuer User
 
Registriert seit: Apr 2005
Beiträge: 6
Zitat:
Diesen Begriff streichst Du am besten aus deinem Kopf: loadVariables(); und ersetzt ihn durch: LoadVars();
*aber daran liegts nicht
Na gut.
Zitat:
Tipp: Keine krummen Werte (1.5)
Geschenkt.

Aber ich versteh auch bei Tageslicht nicht, was an meiner Version die Skalierung so ruckeln lässt. Auch mit ganzzahligen Werten - ich seh es nicht.

Und vielen Dank für deine Version!
marta_s 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 01:34 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele