Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-01-2010, 19:04   #1 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 75
Actionscript 3.0 versus Actionscript 2.0

Hallo,
kann es sein, dass sich AS3.0 mit AS2.0 nicht immer verträgt?

Ich nutze in einer Webanwendung AS3.0 und rufe diverse SWF- Dateien auf, die (noch) AS2.0 beinhalten. In manchen Fällen funktionieren die AS2.0 Scripts dann nicht mehr.

Beispiel:

PHP-Code:
function ladeDaten(){
    
loadVariablesNum("http://www.oberthal-online.de/ip2.php?noCache="+new Date().getTime(), 0"POST");
    
trace(ip); 
}

ladeDaten(); //ruft das Script auf
var ip "offline"
intervalID setInterval(ladeDaten10000); //ruft das Script dann alle 10s auf. 
Dieses AS2.0 Script liegt auf der Hauptbühne einer externen SWF- Datei und gibt über ein PHP- Script lediglich die IP- Adresse eines Servers zurück, sofern dieser mit dem Internet verbunden ist. Das Script funktioniert (standalone): http://www.oberthal-online.de/vpn.swf. Rufe ich dieses Script aber innerhalb der Homepage per Button auf, klappt's einfach nicht. Das hat zuvor funktioniert, als die Homepage selbst noch AS2.0 beinhaltete. Seit AS3.0 benutzt wird, funktioniert zwar noch der Aufruf, aber eben nicht mehr die Funktion. Woran kann das liegen?

Gleiches Problem habe ich auch mit einem Emailformular während andere nachgeladene SWF- Files mit AS2.0 funktionieren

Gruß,
T.B.

Geändert von thbrueck (11-01-2010 um 19:08 Uhr) Grund: Korrektur
thbrueck ist offline   Mit Zitat antworten
Alt 11-01-2010, 19:13   #2 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
ActionScript 3 und ActionScript 2 kann man nicht mischen.

Punkt.
Omega Psi ist offline   Mit Zitat antworten
Alt 12-01-2010, 00:50   #3 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
AS2 und AS3 laufen im Flashplayer in unterschiedlichen virtuellen Maschinen. In der Praxis bedeutet das, dass du zwar AS2-Filme unter AS3 abspielen kannst, nicht aber direkt auf Inhalte des AS2-Filmes zugreifen kannst. Dazu müsstest du mit localConnections bzw. einer entsprechenden Bridge arbeiten.
  Mit Zitat antworten
Alt 12-01-2010, 07:35   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 75
Zitat:
ActionScript 3 und ActionScript 2 kann man nicht mischen.
@Omega Psi - hier wird nicht AS3 mit AS2 gemischt. Schau dir den Link an! Man kann dieses SWF- File im Browser direkt aufrufen und es funktioniert. Dabei lässt sich nicht feststellen, ob das verwendete Actionscript in der SWF nun Version 2 oder 3 ist. Wenn ich nun genau diese SWF- Datei über eine andere Flash- Anwendung lade, die AS3 verwendet, funktioniert die Ausgabe der IP- Adresse im dynamischen Textfeld der extern geladenen SWF- Datei nicht mehr. Da wird nichts gemischt, es handelt sich lediglich um einen Aufruf einer Datei per Button, es findet keinerlei Datenimport/export zwischen beiden Anwendungen statt...

Gruß,
T.B.
thbrueck ist offline   Mit Zitat antworten
Alt 12-01-2010, 07:45   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Doch, das tust du. Wenn eine AS3 Anwendung eine AS2 SWF lädt, sollen sie in der gleichen VM laufen -> AS3 soll AS2 Funktionalitäten laden und ausführen. Was ist das sonst, wenn es kein Mischen ist?

Was ist das sonst? Ich habe versucht es nicht allzu fachlich auszudrücken.
Omega Psi ist offline   Mit Zitat antworten
Alt 12-01-2010, 08:03   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 75
Wenn dem so ist, wie du es sagst Omega Psi (und daran möchte ich nicht zweifeln bei meiner geringen AS- Erfahrung), könnte das zu erheblichen Problemen führen. Ich denke da nur an Banner und andere "fertige" SWF- Dateien, die man sich in Homepages einbinden kann, ohne dass man weiß, welches AS darin verwendet wurde.
Demnach ist es also problemlos möglich, über eine HTML basierte Anwendung, SWF- Dateien auszuführen, während gleiches bei Flash basierten Anwendungen scheitern kann, nur weil die SWF- Dateien verschiedene AS- Codes beinhalten?

Ich spreche hier lediglich vom Laden externer SWF- Files im Sinne des reinen Ausführens, ohne jegliche Parameterübergabe oder sonstigem Datenaustausch...

Um zur Problematik zurück zu kommen (ich habe ja nun verstanden, was du mit Mischen meinst) - es muss doch irgendwie möglich sein, externe SWF- Files einfach nur aus einer AS3 Anwendung zu starten, ohne wissen zu müssen, welches AS in der externen (evt. fremden) SWF- Datei verwendet wurde? Der Ansatz von Holger (mit localConnections bzw. einer entsprechenden Bridge arbeiten) klingt kompliziert...?

Gruß,
T.B.
thbrueck ist offline   Mit Zitat antworten
Alt 12-01-2010, 08:04   #7 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Die verwendete AS-Version einer mit einem Loader geladenen SWF kannst du übrigens über die LoaderInfo selbst ermitteln:
PHP-Code:
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.INITinitHandler);

function 
initHandler(event:Event):void
{
   var 
loader:Loader Loader(event.target.loader);
   var 
info:LoaderInfo LoaderInfo(loader.contentLoaderInfo);
   var 
asVersion:int int(info.actionScriptVersion); 

  Mit Zitat antworten
Alt 12-01-2010, 08:34   #8 (permalink)
Certified dump
 
Registriert seit: Aug 2001
Beiträge: 969
Normalerweise gibt es keine Problem beim Mischen (Laden und Ausführen)
von externen AS2.0 Modulen.

Liegt alles auf einer Domain, läuft es lokal auf der Festplatte ?
Kann sonst ein Security/Sandbox Problem sein..

Und mal anständig trace() einbauen, damit man informiert wird,
was überhaupt ausgeführt wird..
__________________
_______
rudi66 ist offline   Mit Zitat antworten
Alt 12-01-2010, 09:14   #9 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 75
@Rudi

PHP-Code:
Liegt alles auf einer Domain 
Ja und sogar im gleichen Verzeichnis (root).

PHP-Code:
läuft es lokal auf der Festplatte 
Das ist nicht möglich, ohne lokal eine funktionsfähige PHP- Umgebung einzurichten. Ein PHP- Script fragt permanent den Status eines Servers ab, ob dieser online/offline ist. Dieses Script kommuniziert über o.g. AS2.0 Script mit einer SWF- Datei (vpn.swf). Das funktioniert auch (standalone) richtig, wie man am obigen Link nachvollziehen kann. Das funktionierte auch vorher mit einer Homepage auf Flash- Basis mit AS2.

Jetzt habe ich die Homepage umgestaltet und u.a. auch AS3 Script verwendet und seither funktioniert das SWF- File (vpn.swf) nicht mehr.

PHP-Code:
Kann sonst ein Security/Sandbox Problem sein.. 
Das kann ich ausschließen, da ich keinen solchen Placebo- Security Schnickschnack verwende.


Der Vollständigkeit halber ist hier noch das AS3 Script, welches die externe SWF- Datei startet:

PHP-Code:
// VPN
vpn_button.addEventListener(MouseEvent.CLICKbuttonClickHandler5);
function 
buttonClickHandler5(event:MouseEvent):void {
    
    var 
request:URLRequest = new URLRequest("vpn.swf");
    
vpn.load(request);
    
removeChild(tf);
    
addChild(vpn);

Das SWF- File wird sogar gestartet, jedoch bringt die gestartete vpn.swf keine Ausgabe.

Gruß,
T.B.
thbrueck ist offline   Mit Zitat antworten
Alt 12-01-2010, 09:30   #10 (permalink)
Certified dump
 
Registriert seit: Aug 2001
Beiträge: 969
Zitat:
Das ist nicht möglich, ohne lokal eine funktionsfähige PHP- Umgebung einzurichten.
Quatsch, für einen lokalen Test braucht man kein php,
du prüfst einfach ob Du lokal bist und lädst nur eine TXT von der Disk:

if (this._url.indexOf("file:") > -1){
loadVariablesNum("test.txt....
}

Aber ich vermute es liegt nur an loadVariablesNum, die 0 existiert ja nicht als Ladeziel
mit loadVariables sollte es wieder klappen..
__________________
_______
rudi66 ist offline   Mit Zitat antworten
Alt 12-01-2010, 09:32   #11 (permalink)
Certified dump
 
Registriert seit: Aug 2001
Beiträge: 969
Meine mit 0 den Level, der exisitert ja nicht:

level:Number – Eine Ganzzahl, die die Stufe im Flash Player angibt, in die die Variablen geladen werden sollen

Wenn Sie Variablen in einen Ziel-Movieclip laden möchten, verwenden Sie loadVariables() anstelle von loadVariablesNum().

Adobe Flash Lite * loadVariablesNum-Funktion
__________________
_______
rudi66 ist offline   Mit Zitat antworten
Alt 12-01-2010, 10:00   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
Meine mit 0 den Level, der exisitert ja nicht:
Doch, das ist in AS1/2 die Hauptzeitleiste... Jeder Wert ab 1 erstellt einen neuen (IMHO überflüssigen) Level.

Ich würde in AS2 aber generell auf loadVariables und loadVariablesNum verzichten und besser die LoadVars-Klasse nehmen, siehe mein Tutorial.
  Mit Zitat antworten
Alt 12-01-2010, 10:13   #13 (permalink)
Neuer User
 
Registriert seit: Oct 2007
Beiträge: 434


Zitat:
Das kann ich ausschließen, da ich keinen solchen Placebo- Security Schnickschnack verwende.
Da wirst du gar nicht lang gefragt, das ist einfach Teil von Flash und auch sinnvoll und nicht deaktivierbar!
Lukas78 ist offline   Mit Zitat antworten
Alt 12-01-2010, 13:09   #14 (permalink)
Neuer User
 
Registriert seit: Jan 2005
Beiträge: 75
Hallo Holger,

dein Tutorial ist wirklich klasse.

Aber bei mir funktioniert ja LoadVariablesNum grundsätzlich schon (standalone), eben nur nicht aus der AS3 Anwendung heraus nicht. Wieso sollte nun die LoadVars- Funktion sich in diesem Fall anders verhalten? Ist doch auch AS2!

In deinem Tut finde ich leider kein Beispiel für das Einlesen von Werten aus einer PHP- Datei heraus.

Noch zum Verständnis, ist das so richtig? (funktioniert nämlich nicht, jetzt weiß ich aber nicht, ob es an falscher Syntax liegt oder mein ursprüngliches Problem weiterhin dafür verantwortlich ist):

PHP-Code:
function ladeDaten(){
    
    
lv = new LoadVars();//Instanz erstellen 
    
lv.onLoad geladen;//Callback setzen 
    //lv.ip = "online";//diese Variable mit der loadVars-Klasse an ein Script senden 
    
lv.onload("http://www.oberthal-online.de/ip2.php",lv,"POST");//und den Request starten  
    //loadVariablesNum("http://www.oberthal-online.de/ip2.php?noCache="+new Date().getTime(), 0, "POST");
    
trace(ip); 


@Rudi

Wie würde den die Zeile mit LoadVariables aussehen anstatt mit LoadVariablesNum ?

Gruß,
T.B.
thbrueck ist offline   Mit Zitat antworten
Alt 12-01-2010, 13:42   #15 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
PHP-Code:
//lv.onload("http://www.oberthal-online.de/ip2.php",lv,"POST");//und den Request starten  
lv.load("http://www.oberthal-online.de/ip2.php",lv,"POST");//und den Request starten 
Den onLoad hast du ja schon gesetzt...

Zitat:
In deinem Tut finde ich leider kein Beispiel für das Einlesen von Werten aus einer PHP- Datei heraus.
Wie meinst du das? Wie der Flashfilm mit einem PHP-File agiert, hab ich doch beschrieben...
  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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Workflow Flash CS3 versus Actionscript 3-Umgebung rossi123 ActionScript 3 1 03-01-2008 22:57
ActionScript-Editor: Eclipse PlugIn für ActionScript 2.0 wolter Nachrichten 121 25-09-2006 09:59
ActionScript Schriftgrösse versus svp Peterli Flash 4 und Flash 5 0 14-07-2005 09:30
probleme mit flash5-actionscript konvertierung in flash4-actionscript !!! theWEBster Flash 4 und Flash 5 5 19-02-2003 07:46
mit actionscript alpha bestimmen und auch mit actionscript ändern (auftauchen) IcePick Flash 4 und Flash 5 3 29-01-2002 22:00


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele