Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 19-12-2006, 09:48   #1 (permalink)
HelpMeGoInsane
 
Benutzerbild von matten
 
Registriert seit: Nov 2001
Beiträge: 45
Funktionen in Klassen aufrufen

Hallo Flashforum,

ich habe hier glaub eich eine Frage prinzipieller Natur und würde mich freuen, wenn mir da jemand auf die Sprünge hilft. Es geht um das Aufrufen einer Funktion in einem Klassenskript aus einem anderen Klassenskript.

Ich habe z.B. einen MC, der in seinem Klassenskript eine Funktion stehen hat, die diesen MC einblendet. Dann habe ich einen weiteren MC der als Button funktioniert und in seinem Klassenskript beim Drücken auf den Button unter anderem die Einblendefunktion des anderen MC aufrufen will, so ungefähr nach dem Prinzip

_root.einblende_mc.einblenden();

Es funktioniert aber nicht(auf jeden Fall nicht in llen Situationen). Ich glaube mir fehlt da irgendeine Hintergrundinformation für diese Interaktion zwischen den beiden MC denen jeweils ein Klassenskript zugeordnet ist. (Daß ich was falsch geschrieben habe, können wir glaube ich erstmal ausschließen.)

Fall jemand die Minute hat, kann er mir sagen, was ich falsch mache, welche Suche mir Antworten gibt etc.

Danke!
Matten
matten ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:03   #2 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Du kannst Methoden einer Klasse nur über eine Instance ansprechen.
D.h. im BTN-Event ne Instance der MC-Class und ruf damit die Methode auf.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:13   #3 (permalink)
HelpMeGoInsane
 
Benutzerbild von matten
 
Registriert seit: Nov 2001
Beiträge: 45
Ich dachte, das würde ich tun. Dem Button sage ich in seinem Klassenskript z.B.

Code:
this.onRelease = function():Void {

_root.einblende_mc.einblenden();

}
Dann habe ich doch die Instanz der Klasse, die einblenden() beinhaltet (einblende_mc), genau benannt und ihre Methode (einblenden()) angesprochen.

Oder nicht? Oder wie genau mache ich es richtig?

Danke,
Matten
matten ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:18   #4 (permalink)
liebt Skorpionin
 
Benutzerbild von Skorpion
 
Registriert seit: Apr 2003
Beiträge: 1.258
Um das Problem einzukreisen: Funktioniert es denn wenn du
PHP-Code:
_root.einblende_mc.einblenden(); 
von der Hauptzeitleiste aus aufrufst?
Skorpion ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:25   #5 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Was verstest du eigentlich unter Klasse bzw. kannst du mal zeigen
wie du die Var einblende_mc vergeben hast?
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 19-12-2006, 10:51   #6 (permalink)
HelpMeGoInsane
 
Benutzerbild von matten
 
Registriert seit: Nov 2001
Beiträge: 45
Hallo Skorpion, hallo psyk,

danke schonmal für Eure Mühe. Ich hatte die Frage allgemein gehalten, weil ich dachte, daß ich ein allgemeines problem hätte, im konkreten Fall geht es um folgendes:

Ich habe den MovieClip, der mit folgender Klasse verknüpft ist:

Code:
class ArchiveButton extends MenuButton {
	
	function ArchiveButton() {
		
		this.onRelease = function():Void {

			/*
			_root.navigation_mc.resetTimer();
			_root.navigation_mc.setButtonMode();
			_root.archive_mc.fadeInArchive();
			*/


			_root.subtitle_mc.loadSubtitle("archives"); // um diesen Befehl geht es
			
		}
	}
}
Dieser Button soll den MovieClip der folgendes verknüpfte Skript hat, ansprechen: (Vorher quasi den "einblende_mc")

Code:
class Subtitle extends MovieClip {
	
	var listener
	var imagePath
	var mySubtitleLoader:MovieClipLoader
	
	function Subtitle() {

	}
	
	function loadSubtitle(mySubtitle:String):Void {
		
		mySubtitleLoader.unloadClip(this);
		trace(mySubtitle);
		
		imagePath = "http://www.neuemodemagazine.com/graph/subtitle_" + mySubtitle;
		
		mySubtitleLoader = new MovieClipLoader;
		listener = new Object();
		
		//Preloader
		listener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
			//trace(target + ".onLoadProgress with " + bytesLoaded + " bytes of " + bytesTotal); /*ausführliche Version*/
			//trace(bytesLoaded + " bytes of " + bytesTotal); 
		}
		
		listener.onLoadInit = function(target:MovieClip) {
			//trace(target + ": Laden abgeschlossen");
			target._x = (Stage.width)/2 - (target._width)/2;
			target._y = 498;
		}

		mySubtitleLoader.addListener(listener);
		mySubtitleLoader.loadClip(imagePath, this);
	}
	
}
Vielleicht kommt so mehr Licht in die Sache...

Matten
matten ist offline   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



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele