Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-02-2011, 09:30   #1 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
mouseEnabled / mouseChildren verwalten

guten morgen,

ich kämpfe gerade mit dem problem das viele mc's übereinander liegen und sich blockieren. das ganze btns auf true und false setzen artet gerade etwas aus.
es geht um dieses AS
Code:
mouseEnabled = false;
mouseChildren = false;
deshalb meine frage:
wie kann man das mit einer function lösen? also in der art das man sagt "btnr,btnp,btny" sind anklickbar und der rest wird "ausgeschaltet".

grüße
canon ist offline   Mit Zitat antworten
Alt 10-02-2011, 09:44   #2 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
Hi,

mal auf die schnelle geschrieben:
PHP-Code:
function changeMC (mcActive:MovieClipmc1:MovieClipmc2:MovieClipmc3:MovieClipmc4:MovieClip) {
    var 
mcArray:Array = [mc1,mc2,mc3,mc4];
    
    
mcActive.mouseChildren true;
    
mcActive.mouseEnabled true;
    
    for (var 
i:int=0i<mcArray.lengthi++) {
        
mcArray[i].mouseChildren false;
        
mcArray[i].mouseEnabled false;
    }

Oben in der Funktion fügst du halt entsprechend viele Variablen als MC ein, wie du brauchst. Füge diese auch in das Array ein. Ohne Gewehr!
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 10-02-2011, 11:06   #3 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
danke für die antwort.
kann man die function auch dynamisch machen? so das man beim aufruf der function mitgeben kann welche mc's aktiviert werden sollen?

also geht sowas?:
changeMC(btnp,btnz,btno)

grüße
canon ist offline   Mit Zitat antworten
Alt 10-02-2011, 11:17   #4 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
oO das habe ich doch gemacht.

Wenn du die Funktion aufrufst, musst du als erstes den MC angeben der aktiviert werden soll und dann vier MCs die deaktiviert werden sollen. Z. B. so:
PHP-Code:
changeMC(deinMC1deinMC2deinMC3deinMC4deinMC5); 
Einzige Bedingung: du musst immer so viele MCs/Objekte angeben, wie in der Funktion definiert sind.
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 10-02-2011, 18:30   #5 (permalink)
ING
whatever
 
Registriert seit: May 2008
Beiträge: 419
Zitat:
Zitat von M!ch! Beitrag anzeigen
Einzige Bedingung: du musst immer so viele MCs/Objekte angeben, wie in der Funktion definiert sind.
kann man aber auch leicht vermeiden...

ActionScript:
  1. function changeMC (mcActive:MovieClip, ...args:Array) {
  2.     mcActive.mouseChildren = true;
  3.     mcActive.mouseEnabled = true;
  4.    
  5.     for (var i:int=0; i<args.length, i++) {
  6.         args[i].mouseChildren = false;
  7.         args[i].mouseEnabled = false;
  8.     }
  9. }
ING ist offline   Mit Zitat antworten
Alt 10-02-2011, 19:11   #6 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
Gut, wieder was dazugelernt. Das kannte ich nämlich noch nicht.
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 11-02-2011, 10:13   #7 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
danke für eure antworten.

@ING

wie muss ich das ...args:Array verstehen?
was gilt es dort einzusetzen bzw wie ruf ich das ganze auf?

grüße
canon ist offline   Mit Zitat antworten
Alt 11-02-2011, 10:22   #8 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
...args:Array liefert alle weitern an diese Funktion übergebenen Argumente als Array zurück! Mit Hilfe dieser Konstruktion kann man die Übergabe von beliebige vielen Parameter organisieren.

Sowas ist aber auch in der Referenz dokumentiert.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (11-02-2011 um 10:23 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 11-02-2011, 11:15   #9 (permalink)
about nothing
 
Benutzerbild von M!ch!
 
Registriert seit: Mar 2002
Ort: Borken
Beiträge: 724
Du rufst das genauso auf, wie ich oben bereits geschrieben habe. Jedoch kannst du beliebig viele MCs mit übergeben. Musst nur bedenken, dass der erste MC aktiviert wird, alle anderen nicht.
__________________
M!ch! ist offline   Mit Zitat antworten
Alt 11-02-2011, 16:04   #10 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
Thumbs up

danke euch!

eine kurze frage hätte ich noch:
wie kann ich eine var damit auf true oder false setzen?
das wirft mir immer einen fehler aus:
Code:
var args[i] = false;
canon ist offline   Mit Zitat antworten
Alt 11-02-2011, 16:26   #11 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von canon Beitrag anzeigen
wie kann ich eine var damit auf true oder false setzen?
das wirft mir immer einen fehler aus:
Code:
var args[i] = false;
Mit var deklariert man Variablen! In diesem Fall ist das Array args aber 1. schon deklariert, 2. kann man das eh nicht mit dem Array-Zugriffsoperator kombinieren, weil 3. nicht jedes Array-Element einzeln deklariert werden muss/darf!

Wenn Du nur das betreffende Array-Element mit false überschreiben möchtest (warum auch immer?), lass var einfach weg!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (11-02-2011 um 16:28 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 11-02-2011, 16:55   #12 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
hab ich probiert. das ist die function:
Code:
function varaktiv (...argsvar:Array) {
  
    
    for (var i:int=0; i<argsvar.length; i++) {
		
       argsvar[i] = true;
      argsvar[i] = true;
trace(xyz)
    }
//
varaktiv(xyz)
trace gibt immer false aus.
canon ist offline   Mit Zitat antworten
Alt 11-02-2011, 17:14   #13 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Aha, daher weht der Wind!

xyz ist (wie jede Variable) nur eine Referenz auf ein Objekt, nicht das Objekt selbst. Wenn Du nun xyz an die Funktion übergibst, wird im Array args eine weitere Referenz auf dasselbe Objekt erzeugt.

Wenn man nun das Array-Element mit true überschreibst (was nebenbeibemerkt kein guter Stil ist), überschreibt man nur diese eine Referenz und nicht das Objekt selbst. Die Variable xyz zeigt deshalb unverändert auf das Objekt.

Was willst Du denn damit eigentlich genau bezwecken? Vielleicht gibt es ja dafür einen besseren Weg!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (11-02-2011 um 17:15 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 11-02-2011, 17:23   #14 (permalink)
Neuer User
 
Benutzerbild von canon
 
Registriert seit: Aug 2006
Beiträge: 230
Zitat:
Was willst Du denn damit eigentlich genau bezwecken? Vielleicht gibt es ja dafür einen besseren Weg!
gibt es bestimmt! bin halt noch neu und unsicher mit dem AS3 zeug.

ich möchte gerne mehrere meiner variablen auf true setzen mit der function.
am liebsten würd ich die so an die function übergeben: varaktiv(xyz, hallo, welt)

Geändert von canon (11-02-2011 um 17:25 Uhr)
canon ist offline   Mit Zitat antworten
Alt 11-02-2011, 17:27   #15 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von canon Beitrag anzeigen
ich möchte gerne meine variablen auf true setzen mit der function.
Das seh ich , das geht wie gesagt so nicht und das meine ich auch nicht:
  • Was hast Du eigentlich vor?
  • Was soll diese auf-true-Setzerei bewirken?
  • Warum willst Du sowas Simples in eine Funktion packen?
  • Wieso greifst Du nicht direkt auf diese Variablen zu?
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bitmap und mouseEnabled hmpf ActionScript 3 3 22-11-2010 15:35
Frage zu mouseEnabled SpecOps-12 ActionScript 3 3 07-07-2010 10:42
Ausnahmen bei mouseChildren = false Kande ActionScript 3 4 23-06-2010 14:49
TextField.mouseEnabled=false wirkungslos andi_s ActionScript 3 8 06-09-2009 23:10
mouseEnabled deaktivieren klappt nicht gaspode ActionScript 3 14 31-10-2008 11:37


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele