| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 11
| TypeError: Error #1010: Ein Begriff ist nicht definiert und hat keine Eigenschaft
Hallo User, in diesem Skript liegt mein Problem : Code: this["clipLoader" + i ].contentLoaderInfo.addEventListener(Event.COMPLETE, clipComplete);
function clipComplete(event:Event){
MovieClip(event.target.content).gotoAndStop(40); //Stoppen der Animation nachdem geladen
trace(event.target.content);
/*****************Testcode*****************/
this["hitbox" + i].addEventListener(MouseEvent.MOUSE_OVER, playClip)
function playClip(event:Event){
}
/*****************Testcode-Ende*****************/
} Code: this["hitbox" + i].addEventListener(...) Hier mal das ganze Skript : Code: /*Skript zur dynamischen Erstellung eines Menüs
Dieses Skript :
- lädt externe Daten
- schreibt diese in ein Array, dessen Elemente durch "," getrennt sind
- generiert Buttons in einer Schleife, welche der Anzahl der Elemente des Arrays entsprechend oft, durchlaufen wird
***********************************************************
1.Die Buttons bestehen aus :
- einer Hitbox
- einer Beschriftung
- einer Animation
1.1.Die Beschriftung (label)
- wird aus einer externen Datei gelesen und erhält eine Textformatierung
1.2.Die Hitbox :
- ist ein rechteckiger nicht sichtbarer Bereich im Hintergrund
- reagiert auf Mouseevents
- Mouseover => Animation abspielen
- Klick => Verweis ********************IN ARBEIT******************************
1.3.Die Animation :
- wird direkt nach laden gestoppt
- stammt aus einer externen *.swf Datei
- wird nur durch den Mouseover-Event in der Hitbox gestartet ********************IN ARBEIT******************************
*/
/* Import der benötigten Klassen */
import flash.events.*;
import flash.net.*;
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Sprite;
import flash.geom.Rectangle;
/* Ende des Imports */
var xy:int; //Testzähler
/* Laden externer datei mit Variablen zur Beschriftung der Textfelder */<
var reques:URLRequest= new URLRequest("extern.txt") // Request Instanz für URL der externen Daten
var loader:URLLoader = new URLLoader(); // Loader Instanz für Datentransfer erstellt
loader.addEventListener(Event.COMPLETE,completeHandler); // Eventlistener für Ende des Datentransfers erstellt
loader.load(reques); // Loader angewiesen Daten zu laden
/* Hauptfunktion um Buttons zu erstellen (dyn. Generierung von Textfeld hitbox und Animation */<
function completeHandler(event:Event){ //Funktion wird bei beendetem Datentransfer gestartet
/* Initialisierung der benötigten Variablen */
var vars:URLVariables = new URLVariables(loader.data); // Variablen (buttonLabel) aus den externen Daten
var labelsave = vars.buttonLabel; // Variablen in labelsave sichern
var labelArray:Array = vars.buttonLabel.split(","); // Array erstellen, Elemente durch "," getrennt
var i:int; // Schleifenzähler initialisiert
/* In jedem Zyklus der Schleife wird für jedes Arrayelement ein Button erstellt (hitbox, Text, Animation)*/
for (i=0; i<labelArray.length; i++){ // Schleife zur Erstellung der Textfelder
/*1.1. Textfeld */
this["labelText" + i] = new TextField(); //Textfeldinstanz auf der Bühne mit dynamischen Namen erstellen
/* Textpositionierung und Formatierung */
var labelTextFormat:TextFormat = new TextFormat(); // Textformatinstanz erstellen
labelTextFormat.font = "Arial CE";
labelTextFormat.color = 0xFFFFFF;
labelTextFormat.size = 16;
/* Eigenschaften der einzelnen Textfelder werden über einen dynamisch generierten Namen (zB labeltext0)
festgelegt) */
this["labelText" + i].selectable = false;
this["labelText" + i].y = (30*i)+20;
this["labelText" + i].x = 20;
this["labelText" + i].text = labelArray[i];
this["labelText" + i].width = 130;
this["labelText" + i].height = 20;
this["labelText" + i].setTextFormat(labelTextFormat);
this["labelText" + i].antiAliasType = AntiAliasType.ADVANCED;
addChild(this["labelText" + i]); // Instanz der Textfelder auf Bühne erstellen
/* Ende Textfeld*/
/*1.2. hitbox */
this["hitbox" + i] = new Sprite(); // hitbox für Mouseevent erstellt und dynamisch benannt
/* Beschreibung grafische Eigenschaften Hitbox */
this["hitbox" + i].graphics.beginFill(0xFFFFFF, 0);
// this["hitbox" + i].graphics.lineStyle(0, 0x666666);
this["hitbox" + i].graphics.drawRect(20, (30*i)+15, 130, 30);
this["hitbox" + i].graphics.endFill();
addChild(this["hitbox" + i]);
/*Listener + MausEvent Verarbeitung für hitbox*/<
this["hitbox" + i].addEventListener(MouseEvent.CLICK, link)
function link(pEvent:MouseEvent){
xy++;
trace("Ready" + xy);
navigateToURL( new URLRequest("http://www.google.de") , "_self" );
}
/* Ende hitbox */
/* 1.3. Animation für Button (externe SWF datei Laden) */<
var request:URLRequest = new URLRequest("nurbogen.swf");
this["clipLoader" + i] = new Loader();
this["clipLoader" + i].load(request);
addChild(this["clipLoader" + i]);
/* Positioniernung der Animationen */
this["clipLoader" + i].y = (30*i)+8;
this["clipLoader" + i].x = 10;
var help;
/* Event Abschluss nutzen um in der clipComplete funktion die Animation zu stoppen */
this["clipLoader" + i].contentLoaderInfo.addEventListener(Event.COMPLETE, clipComplete);
function clipComplete(event:Event){
MovieClip(event.target.content).gotoAndStop(40); //Stoppen der Animation nachdem geladen
trace(event.target.content);
/*****************Testcode*****************/
this["hitbox" + i].addEventListener(MouseEvent.MOUSE_OVER, playClip)
function playClip(event:Event){
}
/*****************Testcode-Ende*****************/
}
trace(i +":" + labelArray[i]); // keine Funktion ausser Test => Schleifendurchgangsnummer + Buttonname
} //for-Schleife Ende
} //function completeHandler Ende Danke schonmal für entstandene Mühen ![]() mfg ben |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 11
|
ich habe die Variable i mal an der Stelle über folgenden Code ausgeben lassen: Code: MovieClip(event.target.content).gotoAndStop(40); //Stoppen der Animation nachdem geladen
trace(event.target.content);
trace(i);
/*****************Testcode*****************/ |
| | |
| | #5 (permalink) | ||
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
| Zitat:
Zitat:
| ||
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 11
|
Das ist mir jetzt leider auch bewusst geworden ... habe versucht nur die Teilfunktion in einem Skript zu verwirklichen mit Code: var i:uint;
var request:URLRequest = new URLRequest("nurbogen.swf");
var clipLoader:Loader = new Loader();
clipLoader.load(request);
clipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, clipComplete);
function clipComplete(event:Event){
for (i=0; i<5; i++){
trace(i);
var anAnimation = MovieClip(event.target.content);
addChild(anAnimation);
anAnimation.gotoAndStop(40);
anAnimation.x = 40;
anAnimation.y = (30*i)+8;
trace(anAnimation);
}
} So wie ich das verstehe ist das Event fertig wenn ich die Schleife Aufrufe... Das Ergebnis ist leider nur die Darstellung der letzten Instanz ... eigentlich wollte ich aber 5 instanzen generieren,positionieren und erstmal stoppen. |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 11
|
Naja ich weiss das ich noch keinen Durchblick habe .... ist ja auch das erste Skript das ich geschrieben habe ... Also so wie ich es verstanden habe erstelel ich das Objekt ja mit : Code: var anAnimation = MovieClip(event.target.content); ich habe das Skript also jetzt so geändert Code: var i:uint;
var request:URLRequest = new URLRequest("nurbogen.swf");
var clipLoader:Loader = new Loader();
clipLoader.load(request);
clipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, clipComplete);
function clipComplete(event:Event){
var anAnimation:MovieClip = new MovieClip();
anAnimation = event.target.content;
for (i=0; i<5; i++){
trace(i);
addChild(anAnimation);
anAnimation.gotoAndStop(40);
anAnimation.x = 40;
anAnimation.y = (30*i)+8;
trace(anAnimation);
}
} |
| | |
| | #9 (permalink) | ||
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
| Zitat:
An dieser Stelle weist du es nur einer Variable zu. Somit kannst du es über diese ansprechen aber ein neues hast du somit nicht erstellt. Zitat:
Das heißt ab hier rendert der Flashplayer dein Objekt auch visuell. Geändert von rendner[i] (15-08-2008 um 12:40 Uhr) | ||
| | |
| | #12 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 11
|
Ok, danke ![]() Es handelt sich um eine Flash-Animation. Wenn ich 5 mal lade muss ich ja auch 5 mal auf das COMPLETE Event warten. Code: var i: uint;
var request:URLRequest = new URLRequest("nurbogen.swf");
var clipLoader:Loader = new Loader();
for (i=0; i<5; i++){
clipLoader.load(request);
clipLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, clipComplete);
function clipComplete(event:Event)
{
var anAnimation:MovieClip = new MovieClip();
anAnimation = event.target.content;
trace(i);
anAnimation.gotoAndStop(40);
anAnimation.x = 40;
anAnimation.y = (30*i)+8;
addChild(anAnimation);
trace(Event.COMPLETE);
}
} Meine Vermutung ist das ich entweder was mit Event oder Schleife etwas falsch mache, oder das es mit : Code: anAnimation = event.target.content; |
| | |
| | #13 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Ein loaderObject kann nur eine Datei laden und nicht alle 5. Und das ist auch Schwachsinn: PHP-Code: Geändert von rendner[i] (15-08-2008 um 13:53 Uhr) |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Aug 2008
Beiträge: 11
|
So funtzts =) Code: var a: uint;
var i: uint;
var request:URLRequest = new URLRequest("nurbogen.swf");
for(a=0; a<5; a++){
this["clipLoader" + a] = new Loader();
this["clipLoader" + a].load(request);
this["clipLoader" + a].contentLoaderInfo.addEventListener(Event.COMPLETE, clipComplete);
}
function clipComplete(event:Event)
{
var anAnimation = MovieClip(event.target.content);
i++;
trace(i);
anAnimation.gotoAndStop(40);
anAnimation.x = 40;
anAnimation.y = (30*i)+8;
addChild(anAnimation);
trace(Event.COMPLETE);
} Danach möchte ich noch meine hitboxen mit einem Event verknüpfen das die Clips steuert ... und davor hab ich jetzt schon Angst =) VIELEN DANK FÜR DEINE HILFE !!!! |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |