PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Flash/ActionScript Maximal 2 aus einer Liste


darph
2009-06-26, 09:59:42
Ich habe einen Flashfilm.

in diesem Film gibt es rund 10 Buttons/Kästchen. Auf diesen Buttons liegen Kreuze. Anfangs sind alle Buttons angekreuzt.

Klickt man auf einen Button, so wird dieser nicht mehr angekreuzt, alle anderen bleiben angekreuzt.

Klickt man auf einen anderen Button, so wird eben dieser nicht mehr angekreuzt sein, aber alle anderen (also wird der von vorhin wieder angekreuzt).

Scripttechnisch ist das so gelöst, daß in jeder Box steht:

on(release) {
tick_1._alpha = 0;
tick_2._alpha = 100;
tick_3._alpha = 100;
//...
tick_10._alpha = 100;
}

Soweit geht das. Je nach Button ist dann eben ein anderer 0;

Aber: Wir brauchen es dergestalt, daß man genau zwei Buttons unchecken kann. Wird ein dritter unchecked, dann muß der erste wieder angehakelt werden. Programmatisch ist das ja simpel: Fifo-Queue mit 2 Plätzen, das, was wieder raus fällt, wenn ein Element eingefügt wird, wird wieder _alpha = 100 gesetzt, während das, was in der Queue steht, immer _alpha = 0 hat.


Nur wie zur Hölle löse ich das in ActionScript/Flash CS4? Ich stehe bei der ganzen Frame/Zeitleisten-Geschichte irgendwie gerade massiv auf dem Schlauch. Kann ich an andere Stellen Parameter übergeben? Wie rufe ich gemeinsam genutzt Codefragmente/Bibliotheken auf?

http://picdump.darph.net/wp-content/plugins/yet-another-photoblog/YapbThumbnailer.php?post_id=374&w=250&h=250&fltr[]=usm|30|0.5|3 (http://picdump.darph.net/?p=374)

esistich
2009-06-27, 16:16:48
Sehe ich das richtig das du das Prinzip von Radiobuttons brauchst, nur mit dem Unterschied das zwei anstatt einem Radiobutton aktiviert werden dürfen?

Ich habe noch Flash 8 daher weiss ich nicht ob das Script bei dir funktioniert.

hier ist das Ergebnis. (http://esistich.comxa.com/doubleradios/)

_root . flag = new Array ( 0, 1 ) ;
var tickers = new Array ( ticker_1, ticker_2, ticker_3, ticker_4, ticker_5, ticker_6, ticker_7, ticker_8, ticker_9, ticker_10 ) ;

for ( var i = 0; i <= 10; i ++ ) {

tickers [ i ] . onRelease = tickers [ i ] . onReleaseOutside = function () {

this . gotoAndStop ( ( this . _currentframe == 2 ) ? 1 : 2 ) ;

if ( _root . flag [ 1 ] != this && _root . flag [ 1 ] . _currentframe != 1 ) {

_root . flag [ 0 ] . gotoAndStop ( 1 ) ;
_root . flag [ 0 ] = _root . flag [ 1 ] ;

}

_root . flag [ 1 ] = this ;

};

}

falls es das ist was du benötigst, musst du das Script entsprechend anpassen (Anzahl der Instanzen, Alpha statt gotoAndStop usw.)

hier die Dateien. (http://freenet-homepage.de/skydiver_1/doubleradios/doubleradios.rar)