Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-07-2009, 21:17   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2009
Beiträge: 152
Externe SWF Variable verändern

Hallo zusammen, ich habe nun folgendes Problem mit AS3

ich will einen externen movie einbetten und dann variablen im externen ändern vom hauptfilm aus.
Grund: es sind individuelle Werte in Variablen gespeichert, die ich im externen Movie benötige.
Nun habe ich nicht gewusst wie ich das genau mache und hab somit eine testdatei erstellt die so aussieht:

Code:
var laden:Loader = new Loader();
laden.x = 0;
laden.y = 0;
addChild(laden);

var url:URLRequest = new URLRequest();

url.url = "test4.swf";

laden.load(url);

addEventListener(MouseEvent.CLICK, fertig);

function fertig(evt:MouseEvent){
	if (laden.content != null){
	laden.content.nextFrame();	
	}
}
ich habe es vorerst mit nextFrame() da es mit laden.content.var1 nicht funktioniert hat.

kann mir bitte jemand sagen wie ich var aus der test4.swf lese und auch verändere, damit ich sie dort anwenden kann. das wäre super!
Vielen Dank für die Bemühungen!
hothead89 ist offline   Mit Zitat antworten
Alt 23-07-2009, 21:42   #2 (permalink)
JoH
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 99
var loader : Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, onComplete);
loader.load(new URLRequest("test4.swf");

function onComplete(event : Event) : void {
trace(loader.content.var);
}
__________________
http://blog.johannes-hodde.com
JoH ist offline   Mit Zitat antworten
Alt 23-07-2009, 22:16   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2009
Beiträge: 152
ich sehe anhand deiner antwort leider nicht was an meinem script falsch sein soll. hier ist nun mal das original script

Code:
var uss:String = new String();
uss = "3844893";

var einstellungen:Loader = new Loader();
var url:URLRequest = new URLRequest();
url.url = "swfIN/einstellungAnfang.swf";
einstellungen.x = einstellungen.y = 0;

einstellungen.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, fortschritt, false, 0, true);
einstellungen.contentLoaderInfo.addEventListener(Event.COMPLETE, fertig, false, 0, true);

einstellungen.load(url);
LoadInfo.addChild(einstellungen);

/* Loader for copy */ 
	
	var Loaderhintergrund:MovieClip = new LoaderHintergrund();
	addChild(Loaderhintergrund);
	

	var proz_text:TextField = new TextField();

	Loaderhintergrund.addChild(proz_text);
	
	var proz_text2:TextField = new TextField();
	Loaderhintergrund.addChild(proz_text2);

	var Loaderbalken:MovieClip = new LoaderBalken();
	Loaderhintergrund.addChild(Loaderbalken);
	

function fortschritt(evt:ProgressEvent):void{
		var prozent:int = 100 * evt.bytesLoaded / evt.bytesTotal;
		Loaderbalken.width = prozent*6;
		proz_text.text = prozent.toString();
}

function fertig(evt:Event):void{
	Loaderhintergrund.removeChild(proz_text);
	Loaderhintergrund.removeChild(proz_text2);
	Loaderhintergrund.removeChild(Loaderbalken);
	removeChild(Loaderhintergrund);
		if (einstellungen.content != null) {
			trace("asdf");
			einstellungen.content.userID = uss;
	}
		
}
ich hab die textstyles zur textersparniss weggelassen
was ist an dem code falsch, dass folgede meldung kommt:

1119: Zugriff auf eine möglicherweise nicht definierte Eigenschaft userID über einen Verweis mit statischem Typ flash.display: DisplayObject

Die Variable ist in der externen swf so definiert:
var userID:String = new String();

Vielen Dank!

Geändert von hothead89 (23-07-2009 um 22:19 Uhr)
hothead89 ist offline   Mit Zitat antworten
Alt 23-07-2009, 22:38   #4 (permalink)
JoH
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 99
Probier mal vorher zu MovieClip zu casten.
MovieClip(content).userId.

Aber sauberer wäre es wenn die Dokumentenklasse der swf die Du dir holst ein Interface implementiert zu dem Du dann casten kannst:

interface IUser {
function getUserId() : String;
}

und dann sowas:
onComplete(e : Event) {
var user : IUser = IUser(loader.content);
if(null != user)
trace(user.getUserId());
}
__________________
http://blog.johannes-hodde.com

Geändert von JoH (23-07-2009 um 22:39 Uhr)
JoH ist offline   Mit Zitat antworten
Alt 24-07-2009, 11:17   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2009
Beiträge: 152
hallo nochmal erstmal schon danke für die hilfe ich werde das mit der dokuklasse gleich probieren aber ich habe hier noch ein beispiel welches funktioniert, aber ich erkenne den unterschied zu meinem script nicht. findet von euch den vllt jemand?

Code:
var laden:Loader = new Loader();
laden.x = 38;
laden.y = 90;
laden.contentLoaderInfo.addEventListener(Event.COMPLETE, geladen);

addChild(laden);
var url:URLRequest = new URLRequest();

function geladen(evt:Event) {
	trace("Externer Film wurde geladen!");
	trace(evt.target.content);
}

produktwahl1_btn.addEventListener(MouseEvent.CLICK, ladeExterneFilme);
produktwahl2_btn.addEventListener(MouseEvent.CLICK, ladeExterneFilme);
produktwahl3_btn.addEventListener(MouseEvent.CLICK, ladeExterneFilme);

function ladeExterneFilme(evt:MouseEvent) {
	switch (evt.target.name) {
		case "produktwahl1_btn" :
			url.url = "shirt.swf";
			break;
		case "produktwahl2_btn" :
			url.url = "langarm.swf";
			break;
		case "produktwahl3_btn" :
			url.url = "hose.swf";
			break;
	}
	laden.load(url);
}

ansicht_btn.addEventListener(MouseEvent.CLICK, wechsleAnsicht);

function wechsleAnsicht(evt:MouseEvent) {
	if (laden.content != null) {
		laden.content.waslos = "waslos";
	}
}
dabei ist die letze funktion mit

if (laden.content != null) {
laden.content.waslos = "waslos";
}

das entscheidende. worum es geht. und wenn ich das teste und die variable in der anderen swf dekariere und in einem textfeld anzeigen lasse funktioniert es. aber warum da und bei meinem nicht?
(dieses script stammt aus den buch das praxisbuch actions script 3)
hothead89 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
externe swf, variablen, verändern, zugreifen

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:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele