Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-01-2009, 08:17   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 23
Question Flashsite von AS2 auf AS3 porten...

Hallo liebe Flashfreunde!

Ich habe ein riesiges Problem mit einem Projekt:

Ich bin daran eine Website in Flash zu erstellen, bzw. ich hatte die Seite eigentlich schon so gut wie fertig. Dann hat mein Chef ein Tool für die Site gekauft, welches in AS3 programmiert ist.
Bisher habe ich nur in AS2 gearbeitet und kann AS3 nicht wirklich nachvollziehen. Ich habe mich schon via Google und der Flash-Hilfe dumm und dämlich gelesen, aber es will nicht fruchten.

Aufgebaut ist meine Site relativ simpel...
(hier noch ein link: http://port10.de/kunden/reset_network/)

es gibt den Startfilm ("Start.swf",Level0) der mit einer kleinen Startanimation (Seite baut sich auf) versehen ist und am Ende der Zeitleiste in einen Container (welcher eben so benannt ist) eine SWF ("Intro.swf", Level1) lädt.
Nebenher läuft auf dem Startfilm noch permanent eine Swf des animierten Logos ("Logolight.swf", level 9) welche nie "unloaded" wird.

Am Fuß der Hauptfilms (start.swf) ist die Navigation platziert.
Sie besteht aus 6 Buttons, welche "onrelease" die dem Titel entsprechende swf in den Container laden. Zb. bei Klick auf "Wir über uns" wird der film "wir.swf, level 2" geladen und alle anderen Filme werden "unloaded".


Das oben erwähnte Tool dient als eine Bildgalerie für die Seite "Referenzen".
Dieses tool ist jetzt wie erwähnt leider in AS3 programmiert und zwingt mich höchstwahrscheinlich das gesamte Projekt auf AS3 umzustellen.
Ich bekomme leider nichts davon so hin dass es funktioniert.

Ich habe testhalber mal die Buttons statt mit dem ursprünglichen "Onrelease-Code" mit folgendem versehen:

wir.addEventListener(MouseEvent.CLICK, mouseClick);

function mouseClick(evt:MouseEvent):void
{

import flash.net.URLRequest;

var request:URLRequest = new URLRequest("wir.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);

}


Aber wenn ich denn Hauptfilm teste, dann läuft die Startanimation ab und der Film wiederholt sich direkt (also wieder die Startanimation)...

Im Compiler steht dann das hier:

1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft onRelease über einen Verweis mit statischem Typ flash.display:SimpleButton
1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft onRelease über einen Verweis mit statischem Typ flash.display:SimpleButton
1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft onRelease über einen Verweis mit statischem Typ flash.display:SimpleButton
1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft onRelease über einen Verweis mit statischem Typ flash.display:SimpleButton
1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft onRelease über einen Verweis mit statischem Typ flash.display:SimpleButton
1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft onRelease über einen Verweis mit statischem Typ flash.display:SimpleButton
1120: Zugriff auf eine nicht definierte Eigenschaft ladestatus.
1180: Aufruf einer möglicherweise undefinierten Methode loadMovieNum.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1180: Aufruf einer möglicherweise undefinierten Methode ladestatus.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1180: Aufruf einer möglicherweise undefinierten Methode ladestatus.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1180: Aufruf einer möglicherweise undefinierten Methode ladestatus.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1180: Aufruf einer möglicherweise undefinierten Methode ladestatus.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1180: Aufruf einer möglicherweise undefinierten Methode ladestatus.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1180: Aufruf einer möglicherweise undefinierten Methode ladestatus.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1120: Zugriff auf eine nicht definierte Eigenschaft _root.
1120: Zugriff auf eine nicht definierte Eigenschaft prozent.
1120: Zugriff auf eine nicht definierte Eigenschaft prozent.
1120: Zugriff auf eine nicht definierte Eigenschaft prozent.
1120: Zugriff auf eine nicht definierte Eigenschaft prozent.
1180: Aufruf einer möglicherweise undefinierten Methode loadMovieNum.
1180: Aufruf einer möglicherweise undefinierten Methode loadMovieNum.


Ich weiß, dass ich ziemlich umfangreich gepostet habe, aber ich möchte den Vorgang eben genau schildern, um effektiv hilfe bekommen zu können.

Vielen Dank für jede Antwort schonmal im Vorraus!!!

Geändert von blackbyrne (13-01-2009 um 08:26 Uhr)
blackbyrne ist offline   Mit Zitat antworten
Alt 13-01-2009, 08:55   #2 (permalink)
Harry, Wagen!
 
Benutzerbild von uncle.sam
 
Registriert seit: Jan 2006
Beiträge: 574
hast du auch auf AS3 umgestellt?
__________________
- uncle.sam -
uncle.sam ist offline   Mit Zitat antworten
Alt 13-01-2009, 09:10   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 23
Ja, umgestellt habe ich schon.
Funktioniert denn ein "stop" noch in AS3? der sitzt nämlich in einem Bild am Ende der Zeitleiste, um eben am Ende der Startani auch stehenzubleiben.
blackbyrne ist offline   Mit Zitat antworten
Alt 13-01-2009, 09:54   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.407
"stop();" funktioniert immer noch ohne Probleme.
Nico B. ist gerade online   Mit Zitat antworten
Alt 13-01-2009, 10:06   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 23
Hab gerade mal den Preloader gelöscht, weil AS3 den wohl nicht interpretieren kann und nun hab ich nur noch 3 Fehlermeldungen im Compiler:

1180: Aufruf einer möglicherweise undefinierten Methode loadMovieNum.
1180: Aufruf einer möglicherweise undefinierten Methode loadMovieNum.
1180: Aufruf einer möglicherweise undefinierten Methode loadMovieNum.


Diese sind noch zu vernachlässigen bis ich das Prinzip eines loadmovie in AS3-Manier (versteh noch nicht wie das im AS3 funzt) umgesetzt bekomme, aber loopen tut der Film trotzdem noch!?

Geändert von blackbyrne (13-01-2009 um 10:13 Uhr)
blackbyrne ist offline   Mit Zitat antworten
Alt 13-01-2009, 10:14   #6 (permalink)
Flashworker
 
Benutzerbild von sebastian
 
Registriert seit: Nov 2001
Ort: Wiesbaden
Beiträge: 10.945
Es gibt eben Compiler Fehler und deswegen wird der Film nicht richtig
kompiliert und entsprechend auch das stop ignoriert.
sebastian ist offline   Mit Zitat antworten
Alt 13-01-2009, 10:31   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 23
Super, hätte ich doch drauf kommen können.... danke!
Hab die entsprechenden AS-Befehle gelöscht und jetzt bleibt der Film auch am Ende stehen.
Allerdings mit folgendem Hinweis in deer Ausgabe:

WARNUNG: Aktionen auf Schaltflächen oder MovieClip-Instanzen werden in ActionScript 3.0 nicht unterstützt. Alle Skripts in Objektinstanzen werden ignoriert.

Ich habe nun das AS aus dem Button "wir" entfernt und im letzten Bild in der Timeline eingebaut.
Wenn ich nun auf den Button klicke, dann lädt er den gewünschten Film ("wir.swf") aber danach ist die Navi nicht mehr bedienbar. Sie ist zwar zu sehen, aber ich kann nicht klicken. Liegt der geladene Film nun vor dem Hauptfilm?
Ich habe im AS2 eben alles mit Leveln so geschaltet, dass die Navi immer im Vordergrund ist und somit bedienbar bleibt... wie stelle ich dass denn in AS3 an?

Und jetzt habe ich die anderen Buttons auch leergeräumt und die Scripts in die Timeline mit aufgenommen. Nun tut sich noch eine Frage auf: Ist es möglich die Button-Funktionen alle ins Script aufzunehmen? Ich habe nämlich jetzt das Problem dass mir der Compiler sagt:

1021: Doppelte Funktionsdefinition.
1021: Doppelte Funktionsdefinition.
1021: Doppelte Funktionsdefinition.
1021: Doppelte Funktionsdefinition.


Das Script sieht so aus:

wir.addEventListener(MouseEvent.CLICK, mouseClick);

function mouseClick(evt:MouseEvent):void
{

import flash.net.URLRequest;

var request:URLRequest = new URLRequest("wir.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);

}

ref.addEventListener(MouseEvent.CLICK, mouseClick);

function mouseClick(evt:MouseEvent):void
{

import flash.net.URLRequest;

var request:URLRequest = new URLRequest("referenzen.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);

}

prod.addEventListener(MouseEvent.CLICK, mouseClick);

function mouseClick(evt:MouseEvent):void
{

import flash.net.URLRequest;

var request:URLRequest = new URLRequest("produkte.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);

}

news.addEventListener(MouseEvent.CLICK, mouseClick);

function mouseClick(evt:MouseEvent):void
{

import flash.net.URLRequest;

var request:URLRequest = new URLRequest("news.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);

}

kontakt.addEventListener(MouseEvent.CLICK, mouseClick);

function mouseClick(evt:MouseEvent):void
{

import flash.net.URLRequest;

var request:URLRequest = new URLRequest("kontakt.swf");
var loader:Loader = new Loader()
loader.load(request);
addChild(loader);

}

Geändert von blackbyrne (13-01-2009 um 10:40 Uhr)
blackbyrne ist offline   Mit Zitat antworten
Alt 13-01-2009, 11:37   #8 (permalink)
alte pfeife
 
Benutzerbild von muschko
 
Registriert seit: May 2003
Ort: Kassel
Beiträge: 1.222
wieso hast du denn mehrmals den import "import flash.net.URLRequest;" den benötigt man nur einmalig, dann kann man diese Klasse benutzen.

Und importiere die Klasse mal am Anfang deines Scripts. Dann sehen wir weiter

Und du hast 5 Funktionen die gleich heißen. mouseClick

Geändert von muschko (13-01-2009 um 11:38 Uhr)
muschko ist offline   Mit Zitat antworten
Alt 13-01-2009, 12:52   #9 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 23
Also die überflüssigen importe hab ich rausgenommen.

Was die Funktionen angeht: Muss ich die nicht für jeden Button neu angeben bzw. reicht es bei der auch sie einmalig im script zu haben? Es muss doch jeder Button dafür definiert werden oder nicht?
blackbyrne ist offline   Mit Zitat antworten
Alt 13-01-2009, 13:13   #10 (permalink)
Alter User
 
Benutzerbild von Linowitch
 
Registriert seit: Nov 2006
Ort: München
Beiträge: 485
Es gibt mehrere möglichkeiten wie du das anstellen kannst,
du darfst aber eine Funktion nur einmal deklarieren, entweder du nennst die funktionen immer anders,
ActionScript:
  1. wir.addEventListener(MouseEvent.CLICK, mouseClickWirBtn);
  2.  
  3. function mouseClickWirBtn(evt:MouseEvent):void
  4. {
  5.     ...
  6. }
oder du nennst sie immer gleich fragst aber in der mouseClick funktion ab welcher Btn gedrückt wurde
ActionScript:
  1. wir.name = "wir";
  2. news.name = "news";
  3.  
  4. wir.addEventListener(MouseEvent.CLICK, mouseClick);
  5. news.addEventListener(MouseEvent.CLICK, mouseClick);
  6.  
  7. function mouseClick(evt:MouseEvent):void
  8. {
  9.     // Beispiel wenn dein Btn ein MC ist
  10.     var request:URLRequest;
  11.     switch(MovieClip(evt.target).name){
  12.         case "wir": request = new URLRequest("wir.swf");
  13.         break;
  14.         case "news": request = new URLRequest("news.swf");
  15.         break;
  16.         ...
  17.     }
  18.     var loader:Loader = new Loader()
  19.     loader.load(request);
  20.     addChild(loader);
  21. }
__________________
Gruß Linowitch
Wer glaubt gut zu sein hat aufgehört besser zu werden!

Website

Geändert von Linowitch (13-01-2009 um 13:14 Uhr)
Linowitch ist offline   Mit Zitat antworten
Alt 13-01-2009, 14:15   #11 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Servus
Vorausgesetzt die MovieClips heißen so wie die swf's!!
ActionScript:
  1. var movieArray:Array =["kontakt", "news", "produkte", "referenzen", "wir"];
  2. for (var i:int =0; i<movieArray.length; i++) {
  3.     this[movieArray[i]].addEventListener (MouseEvent.CLICK, testFunk);
  4.     this[movieArray[i]].buttonMode=true;
  5. }
  6. function testFunk (evt:MouseEvent) {
  7.     var request:URLRequest;
  8.     request = new URLRequest(evt.target.name+".swf");
  9.     var loader:Loader = new Loader();
  10.     loader.load (request);
  11.     addChild (loader);
  12. }
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 13-01-2009, 14:37   #12 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 23
Da die Buttons Schaltflächen sind, bin ich bei der ersten Variante geblieben.

Ich habe jetzt alle Events neu benannt und es sieht so aus:

Zitat:
import flash.net.URLRequest;

intro.addEventListener(MouseEvent.CLICK, mouseClickintro);

function mouseClickintro(evt:MouseEvent):void
{

var request:URLRequest = new URLRequest("intro.swf");
var intro:Loader = new Loader()
intro.load(request);
addChild(intro);
}

wir.addEventListener(MouseEvent.CLICK, mouseClickwir);

function mouseClickwir(evt:MouseEvent):void
{

var request:URLRequest = new URLRequest("wir.swf");
var wir:Loader = new Loader()
wir.load(request);
addChild(wir);
}

ref.addEventListener(MouseEvent.CLICK, mouseClickref);

function mouseClickref(evt:MouseEvent):void
{

var request:URLRequest = new URLRequest("referenzen.swf");
var ref:Loader = new Loader()
ref.load(request);
addChild(ref);

}

prod.addEventListener(MouseEvent.CLICK, mouseClickprod);

function mouseClickprod(evt:MouseEvent):void
{

var request:URLRequest = new URLRequest("produkte.swf");
var prod:Loader = new Loader()
prod.load(request);
addChild(prod);
}

news.addEventListener(MouseEvent.CLICK, mouseClicknews);

function mouseClicknews(evt:MouseEvent):void
{

var request:URLRequest = new URLRequest("news.swf");
var news:Loader = new Loader()
news.load(request);
addChild(news);
}

kontakt.addEventListener(MouseEvent.CLICK, mouseClickkontakt);

function mouseClickkontakt(evt:MouseEvent):void
{

var request:URLRequest = new URLRequest("kontakt.swf");
var kontakt:Loader = new Loader()
kontakt.load(request);
addChild(kontakt);

}
Leider bekomme ich dann einen mir nicht schlüssigen Fehler angezeigt:

Zitat:
Zeile 3: 1120: Zugriff auf eine nicht definierte Eigenschaft intro.
Zeile 37:1120: Zugriff auf eine nicht definierte Eigenschaft prod.
Die sehen doch genauso aus wie die anderen, was hat er dann da zu meckern?

Vielen Dank schonmal für alle bisher geposteten Antworten und die viele Geduld!

Geändert von blackbyrne (13-01-2009 um 14:38 Uhr)
blackbyrne ist offline   Mit Zitat antworten
Alt 13-01-2009, 14:42   #13 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Die Fehlermeldung sagt das da keine Buttons mit den Namen "intro" und "prod" vorhanden sind!!
P.S!
Des funzt auch mit Button's
ActionScript:
  1. var buttonArray:Array =["kontakt", "news""wir"];
  2. for (var i:int =0; i<buttonArray.length; i++) {
  3.     this[buttonArray[i]].addEventListener (MouseEvent.CLICK, testFunk);
  4. }
  5. function testFunk (evt:MouseEvent) {
  6.     var request:URLRequest;
  7.     request = new URLRequest(evt.target.name+".swf");
  8.     var loader:Loader = new Loader();
  9.     loader.load (request);
  10.     addChild (loader);
  11. }
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"

Geändert von RustyCake (13-01-2009 um 14:47 Uhr)
RustyCake ist offline   Mit Zitat antworten
Alt 13-01-2009, 14:53   #14 (permalink)
alte pfeife
 
Benutzerbild von muschko
 
Registriert seit: May 2003
Ort: Kassel
Beiträge: 1.222
Genau wie Rusty Cake gesagt hat, du musst die Variablen vorher initialisieren.
muschko ist offline   Mit Zitat antworten
Alt 13-01-2009, 15:00   #15 (permalink)
Neuer User
 
Registriert seit: Aug 2008
Beiträge: 23
Der Tipp war gut... ich hatte die Instanzen anders benannt als im Script definiert.
Könnt ihr mir wohl sagen was ein Namespace-Konflikt ist?

1151: In Definition request im Namespace internal liegt ein Konflikt vor.
blackbyrne ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as2, as3, button, loadmovie, unload

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 13:06 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele