Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-09-2006, 12:02   #1 (permalink)
Neuer User
 
Benutzerbild von sakn
 
Registriert seit: Nov 2004
Ort: Schweiz
Beiträge: 66
Typdiskrepanz und Klassen Referenzierung

Hi Leute...

Da ich mich mit Actionscript 2 und OOP nicht wirklich auskenne, stoss ich schon auf meine ersten Probleme, für welche ich keine Lösung finde die ich verstehen würde. Weder hier im Forum in anderen Beiträgen, noch in der Flash hilfe.

Nun, da hier bestimmt welche sind, die mir mein Problem lösen und erklären könnten, versuch ichs einfach mal...

Problem 1:

Also ich hab ein Code der in Actionscript 1 funktioniert. Wenn ich den aber als Actionscript 2 rausrechnen will, kommt folgender Fehler:


**Fehler** Szene=Szene 1, Ebene=befehle, Bild=1:Zeile 16: Typdiskrepanz.
var x = parseFloat(235);

**Fehler** Szene=Szene 1, Ebene=befehle, Bild=1:Zeile 17: Typdiskrepanz.
var y = parseFloat(200);


...es ist also eine Typdiskrepanz. Wie muss ich denn den Code schreiben, das es keine Diskrepanz gibt??? Normalerweise in Actionscript 2 muss man doch Variablen so deklarieren :" var y:Number = parseFloat(200);" .... Aber so kommt leider der selbe Fehler.


Problem 2:

Im selben Script include ich eine Klasse mit...#include "moving.as"

...und darin steht unteranderem:
Code:
Math.moveIn = function (t, b, c, d) {
	return c*(t/=d)*t + b;
};
...und rufe diese Funktion im Script so auf:
Code:
_root.mc_phone.moveClip("moveIn", x, y, dur);
...und bringt mir daraufhin folgenden Fehler:

**Fehler** Szene=Szene 1, Ebene=befehle, Bild=1:Zeile 39: Keine Eigenschaft mit dem Namen 'moveIn' vorhanden.
delete this.onEnterFrame;

...und ich hab einfach keine Plan woran das liegen könnte. Ich weiss mit Sicherheit das es was mit der Syntax von Actionscript 2 zu tun hat, aber alles nachlesen hat mich nicht gerade erleuchtet...im gegenteil...noch mehr verwirrt. ...denn in AS 1 funktioniert dies, aber in AS2 nicht....

Deshalb wäre ich super froh, wenn mir hier jemand bei meinem Problem unter die Arme greifen könnte.

Cheers'n Thanx
Sakn

Geändert von sakn (15-09-2006 um 12:04 Uhr)
sakn ist offline   Mit Zitat antworten
Alt 15-09-2006, 12:11   #2 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
parseFloar erwartet einen String als Parameter

Bei dem anderen wäre deine »movieClip« Methode interessant.

Geändert von sebastian (15-09-2006 um 12:12 Uhr)
sebastian ist offline   Mit Zitat antworten
Alt 15-09-2006, 12:24   #3 (permalink)
Neuer User
 
Benutzerbild von sakn
 
Registriert seit: Nov 2004
Ort: Schweiz
Beiträge: 66
...und wie würde der Syntax aussehn, wenn er einen String als Parameter erwartet?
...etwa so: var x:String = parseFloat(235); ???...
...bitte um Verständnis für meine "unwissenheit" diesbezüglich....ich bin leider nur ein Gelegenheits Flasher...

...die moveClip methode sieht wie folgt aus:

PHP-Code:
MovieClip.prototype.moveClip = function(methodendXendYdur) {
    if(
method==undefined || endX==undefined || endY==undefined || dur==undefined){
        
trace("MovieClip.moveClip(); requires 4 arguments: method, x position, y position, duration")
        return;
    }
    
// define params as object properties
    // bx & by = begin position
    // cx & cy =  destination
    // t = time
    // d = duration
    // m = Math method defined in easing equations .as file
    
var tmpObj = {m:method,bx:this._xby:this._ycx:endX-this._xcy:endY-this._yt:0d:dur};
    
// attach empty clip for enterframe loop to make sure not to override onenterframe event of current clip
    
var _mc this.createEmptyMovieClip("move_mc"500);
    
// pass params to tmp MC
    
_mc.tmpObj;
    
// enterframe loop
    
_mc.onEnterFrame = function() {
        var 
motion=Math[this.o.m];
        
this._parent._x motion(this.o.tthis.o.bxthis.o.cxthis.o.d);
        
this._parent._y motion(this.o.tthis.o.bythis.o.cythis.o.d);
        
// if time var == duration we reached destination
        
if (this.o.== this.o.d) {
            
// destination reached - if onMoveDone callback defined, invoke it
            
if (this._parent.onMoveDone) {
                
this._parent.onMoveDone();
            }
            
// remove tmp MC
            
this._parent.move_mc.removeMovieClip();
        } else {
            
// increment time var
            
this.o.t++;
        }
    };
};

:
rolleyes
sakn ist offline   Mit Zitat antworten
Alt 15-09-2006, 12:27   #4 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Wo ist der Sinn von parseFloat(235) ? Also warum nutzt du parseFloat?!

Ach so, das andere:
ActionScript:
  1. Math.prototype.moveIn = function (t, b, c, d) {
  2.     return c*(t/=d)*t + b;
  3. };

Wobei ich es in AS2 anders lösen würde, verstehe auch nicht, warum du auf AS2 umstellst,
wenn du alten Code hast.

Geändert von sebastian (15-09-2006 um 12:30 Uhr)
sebastian ist offline   Mit Zitat antworten
Alt 15-09-2006, 13:08   #5 (permalink)
Neuer User
 
Benutzerbild von sakn
 
Registriert seit: Nov 2004
Ort: Schweiz
Beiträge: 66
Sebastian W. , das parseFloat war wirklich unnütz! ...denn genau daran lags...irgendwie logischich...Das parseFloat war deshalb drin, weil man bei der Anwendung, woher ich den Code her hatte, x und y per eingabefeld bestimmen konnte.

AS 2 Code darum, weil ich das gerne lernen würde...genau so wie OOP. ...und meine alten Codes in AS 2 umzuschreiben und zu erweiteren ist doch die beste möglichkeit dies praktisch zu erlernen.
Wie würdest es denn du in AS 2 schreiben ??? *neugier*

Cheers'n Thanx
Sakn
sakn ist offline   Mit Zitat antworten
Alt 15-09-2006, 13:11   #6 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Würde das so lassen wie es ist, wenn es funktioniert und mir lieber ein neues
Projekt für AS2 anlegen, wo du gleich die neue Klassenstruktur verwendest.
sebastian 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 18:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele