| |||||||
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) |
| HelpMeGoInsane Registriert seit: Nov 2001
Beiträge: 45
| variablenübergabe MovieClip-Button
Hallo Forum, ich habe ein kleines Verständnisproblem und hoffe mal, daß mir jemand das kurz erklären kann: In meinem Class Skript deklariere ich eine Variable var menuInit:Boolean;. In der konstruktorfunktion setze ich die dann auf true. Dann habe ich meine Buttonfunktion, die beim releasen und wenn menuInit == true ist, Aktionen aufrufen soll. Aber irgendwie kommt menuInit nicht in der Buttonfunktion an. Was mache ich da falsch? Hier nochmal der Code: HTML-Code: class StandardButton extends MovieClip {
var hitAreaName:String;
var backgroundName:String;
var menuInit:Boolean;
static var myObjectPath:String;
function StandardButton(myName:String, myX:Number, myY:Number, myMenu:String, myBackgroundMarker:Number, myDestinationMC:MovieClip, myMenuType:String) {
this.menuInit = true;
hitAreaName = myName + "_hitArea";
_root.adressBlockMC.attachMovie("hitAreaMC", hitAreaName, _root.adressBlockMC.getNextHighestDepth());
_root.adressBlockMC[hitAreaName]._alpha = 0;
_root.adressBlockMC[hitAreaName]._x = myX - 3;
_root.adressBlockMC[hitAreaName]._y = myY - 3;
_root.adressBlockMC.attachMovie(myName, myName, _root.adressBlockMC.getNextHighestDepth());
_root.adressBlockMC[myName]._x = myX;
_root.adressBlockMC[myName]._y = myY;
_root.adressBlockMC[hitAreaName]._width = _root.adressBlockMC[myName]._width + 6;
_root.adressBlockMC[hitAreaName].onRollOver = function() {
_root.adressBlockMC[myName].gotoAndStop(2);
this._alpha = 80;
}
_root.adressBlockMC[hitAreaName].onRollOut = function() {
_root.adressBlockMC[myName].gotoAndStop(1);
this._alpha = 0;
}
_root.adressBlockMC[hitAreaName].onRelease = function() {
if(_root.showcaseMenuButton.menuInit == true) {
trace("MenuInit: " + this.menuInit);
_root.adressBlockMC.projectCanvasMC.removeMovieClip();
_root.adressBlockMC.showcaseMenuMC.removeMovieClip();
_root.maskContainer.removeMovieClip();
this.menuInit = false;
StandardButton.showMyMenu(myMenu, myMenuType);
}
_root.background.rotatePanorama(myBackgroundMarker, myDestinationMC);
}
} Vielen Dank schon mal! Matten |
| | |
| | #2 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Ich frage mich, warum Du Klassen benutzt, wenn darin in den _root referenziert wird. Versuche doch mal deiner Klasse den entsprechenden MovieClip (Button) als Referenz zu übergeben, dann ist die Klasse auch wiederverwendbar, was Sinn und Zweck der Sache ist. Zu deinem Problem. Suche mal nach Delegate oder Scoping. Du setzt die Variable nicht im richtigen Kontext. |
| | |
| | #3 (permalink) |
| HelpMeGoInsane Registriert seit: Nov 2001
Beiträge: 45
|
Danke für Deine Antwort. Ich bin mir nicht sicher was Du hinsichtlich der Wiederverwendbarkeit meinst, mit diesem Skript kann ich ja so viele Buttons machen wie ich will (die liegen halt alle in dem angegebenen Movieclip, was aber für mich ok ist). Aber wenn es anders vorteilhafter ist, dann würde ich es natürlich so machen... Falls Du die Minute hast, würde ich mich freuen, wenn Du mir nen kurzen Verbesserungsvorschlag machst, insbesondere die von Dir angesprochene Übergabe des MCs an die Klasse habe ich noch nicht kapiert. Dank und Gruß, Matten |
| | |
| | #4 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Du erbst zum Beispiel von MovieClip, ohne das du die Methoden der MovieClip Klasse brauchst. Und wiederverwendbar ist deine Klasse nur im _root Kontext. Wenn du es so aufbaust, dann hast du mehr Narrenfreiheit: Code: import mx.blabla.Delegate // kenne den Pfad nicht aufwendig
class StandardButton
{
private var property: String = "Ich bin im richtigen Scope";
public function StandardButton( button: MovieClip )
{
button.onPress = Delegate.create( this, onButtonPress );
}
private function onButtonPress(): Void
{
trace( "property: " + property );
}
}
var button: MovieClip = whereeveryouare.attachMovie( 'linkageId', 'instanceName', whereeveryouare.nextHighestDepth() );
var stardardButton: StandardButton = new StandardButton( button );
// oder:
class StandardButton extends MovieClip
{
private var property: String = "Ich bin im richtigen Scope";
private function onLoad()
{
onPress = onButtonPress;
}
private function onButtonPress(): Void
{
trace( "property: " + property );
}
}
Object.registerClass( 'linkageId', StandardButton );
var stardardButton: StandardButton = StandardButton( whereeveryouare.attachMovie( 'linkageId', 'instanceName', whereeveryouare.nextHighestDepth() ) ); |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |