| |||||||
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) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Stehe auf dem Schlauch: Klasseninterne Variablen funzen nicht :-(
Liebes Forum, ich bin verzweifelt: Ich möchte Videos abspielen und habe das Problem, dass wenn ich in meinem Menü vom Video wieder zurück zum Kapitelmenü gehe und wieder zum Video, der Film zweimal abgespielt wird. Ich erreiche aber diesen verflixten Player nicht, um ihn beim Wechesl komplett auszuradieren. Ich habe beim "adden" des Players das Objekt in einer Varialen "this.AddedChild" gespeichert. In der Funktion "onChildAdded()" ist diese Variable aber bereits wieder null. Ich habe auch versucht, dem Objekt "AddedChild" den eindeutigen Namen "E3_content" zu geben um das Objekt über den Namen anzusprechen. Klappt aber nicht: Code: public class cl_E3 extends MovieClip {
private var _videoclip:String;
public var AddedChild:DisplayObject;
public var player:FLVPlayback;
public function cl_E3() {
stage.addEventListener(CustomEvent.CUSTOM, onCallE3);
this.addEventListener(Event.ADDED, onChildAdded);
this.addEventListener(Event.REMOVED_FROM_STAGE, onUnload);
stage.addEventListener(CustomEvent.CUSTOM, onKillPlayer);
}
public function onCallE3(evt:CustomEvent = null):void {
if (evt.methode == "Aktualisieren" && evt.zielebene == 3) {
this._videoclip = undefined;
if (!imgObj) var imgObj:DisplayObject = undefined;
var nameArray:Array = evt.argument.split("_"); //Wenn ein Videoinhalt übergeben wird, ist der Name durch zwei "_" getrennt"
if (nameArray.length == 1) {
imgObj = getDisplayObject("lib_" + nameArray[0]););
} else {
this._videoclip = evt.argument;
var player = new FLVPlayback();
player.activeVideoPlayerIndex = 0;
player.autoPlay = true;
player.width = 1080;
player.x = 200;
player.height = 810;
player.y = 107;
player.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
player.align = VideoAlign.CENTER;
player.source = "./videos/"+this._videoclip+".f4v"
imgObj = player;
}
}
trace("onCallE3: " + imgObj);
try { this.AddedChild = this.addChildAt(imgObj, 0); }
catch (e:RangeError) { trace("onCallE3:addChildAt " + e); }
trace("Child is: " + this.AddedChild);
AddedChild.name = "E3_content";
trace("Child's name is: " + this.AddedChild.name); //Soweit klappts
}
}
private function onChildAdded() {
arguments;
trace("cl_E3:onChildAdded "+AddedChild.name); //Hier ists dann null
try { stage.dispatchEvent(new CustomEvent(CustomEvent.CUSTOM, "StagePlay")); }
catch(e:Error) { trace("onCallE3:onChildAdded:stage.dispatchEvent: "+e); }
}
private function onKillPlayer(evt:CustomEvent) {
if (evt.methode == "StageBack") {
trace("onCallE3:onKillPlayer: Player stoppt"+this.name);
this.E3_content.stop(); //Auch das klappt nicht :(
}
}
function getDisplayObject(linkage:String):DisplayObject {
var clazz:Class = getDefinitionByName(linkage) as Class;
return new clazz();
}
function onUnload () {
arguments;
trace("E3 UnLoad " + this.name + " " + this.AddedChild);
stage.removeEventListener(CustomEvent.CUSTOM, onCallE3);
this.removeEventListener(Event.ADDED, onChildAdded);
this.removeEventListener(Event.REMOVED_FROM_STAGE, onUnload);
stage.removeEventListener(CustomEvent.CUSTOM, onKillPlayer);
this.removeChild(this.E3_content); //Aufräumen klappt auch nicht
} Danke und viele Grüße Seebold |
| | |
| | #2 (permalink) |
| Padawan Registriert seit: Dec 2005 Ort: Hannover
Beiträge: 75
| Immer noch unklares Verhalten bei FLV-Player und Instanzierung
Hallo liebes Forum, tja, da konnte mir keinen helfen, darum habe ich meinen Ansatz geändert/vereinfacht. Ich starte einen Videoplayer zu Beginn des Projektes und möchte dann die Source anpassen und play sagen. Das ganze soll ganz unten auf root laufen. Nur kann ich zwar nach der Instanzierung aus einer anderen Funktion heraus die Playerinstanz abfragen (Objektreferenz, Name oder x-position), nicht aber FLV-Playback-spezifische Eigenschaften wie "source" oder Methoden wie play() erreichen. Hier ein bisschen Code; alles im Main.as (Dokumentenklasse): <b>Im Konstruktor der Dokumentenklasse Main:</b> Code: addVideoplayer(); stage.addEventListener(CustomEvent.CUSTOM, onVideoPlay); //Wenn Event "VideoPlay" dispatcht wird Code: private var videoplayer:DisplayObject;
private function addVideoplayer() {
var player = new FLVPlayback();
player.activeVideoPlayerIndex = 0;
player.autoPlay = true;
player.width = 108.0;
player.x = 200;
player.height = 81.0;
player.y = 107;
player.scaleMode = VideoScaleMode.MAINTAIN_ASPECT_RATIO;
player.align = VideoAlign.CENTER;
player.source = "./videos/kap2.f4v"
this.videoplayer = this.addChildAt(player,0);
this.videoplayer.name = "mc_videoplayer";
}
} Code: public var mc_videoplayer:MovieClip; //muss das?
private function onVideoPlay(evt:CustomEvent) {
if (evt.methode == "VideoPlay") {
trace(this.videoplayer.x+" "+this.videoplayer.name); //funktionert
trace(this.videoplayer.align); //funktioniert nicht:1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft align über einen Verweis mit statischem Typ flash.display:DisplayObject
this.videoplayer.stop(); //funktioniert nicht
trace(getChildByName("mc_videoplayer")); //Gibt Objektreferent [object FLVPlayback] zurück
trace(getChildByName("mc_videoplayer").align); //funktioniert nicht:1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft align über einen Verweis mit statischem Typ flash.display:DisplayObject
trace(MovieClip(root).mc_videoplayer.align); //Funzt auch nicht
}
} Danke und liebe Grüße Seebold |
| | |
| | #3 (permalink) | |
| i ate pixels Registriert seit: Mar 2004 Ort: Augsburg
Beiträge: 527
|
Hallo Seebold, woher soll dein DisplayObject denn wissen was es mit der Eigenschaft align anfangen soll? Zitat:
Eine andere Frage, die ich mir stelle ist: Wieso erstellst du eine lokale instanz der player variable mit dem Typ FlvPlayback und weisst diese Instanz dann einer Klassenvariable mit dem Typ DisplayObject zu !? ![]() probier doch mal folgendes: ActionScript:
ActionScript:
ActionScript:
Grüße Martin
__________________ GTA ähnliches Auto mit HTML, CSS3 + JavaScript | |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Oct 2007 Ort: Kölle
Beiträge: 1.231
|
hi, dein "videoplayer" ist ein Displayobject und somit nur ein Container für den eigentlichen Player(Deine FLVPlayback-Instanz - somit ein schlechter Name); Somit kannst Du die Methoden und Eigenschaften der FLVPlayback-Komponente NICHT auf "videoplayer" sondern nur auf "player" anwenden. Um in Deinem EventHandler da ran zu kommen sehe ich spontan zwei Möglichkeiten: 1.Du benutzt eine Klassenvariable für die Playbackinstanz: PHP-Code: PHP-Code: Schon in AS2 nicht - in AS3 erst recht nicht. Arbeite besser direkt mit Referenzen. LG ANdré [EDIT] JAU, da war pixelslave schneller!
__________________ Die Hoffnung stirbt zuletzt. Aber sie stirbt. Geändert von andrelehnert (17-05-2011 um 00:42 Uhr) |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| funktion, klasse, übergeben, variabeln |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| stehe mal wieder auf dem schlauch... | yuppy | Flash Einsteiger | 17 | 07-07-2008 14:16 |
| Pfad, stehe auf dem Schlauch | _Admin__ | Flash Einsteiger | 4 | 01-08-2007 10:40 |
| Zeitleistenvariable - ich stehe auf dem Schlauch | andgar | ActionScript 1 | 2 | 25-01-2005 09:40 |
| Stehe auf dem Schlauch bei Galerie | Tommie_Jay | ActionScript 1 | 2 | 20-08-2004 13:04 |
| Variablen (ich stehe auf´m schlauch) | joga | Flash MX | 15 | 09-04-2003 15:26 |