Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-10-2011, 14:05   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 47
Buttontausch

Hi,

ich suche nach einer Möglichkeit, einen Button (my_button), der angeklickt wurde, durch einen anderen Button (my_button_grey) zu ersetzen - und zwar dauerhaft.
Wenn möglich, ohne großes Variablen-Rumgeschleppe oder if... Abfragen.

Ist das in AS3 möglich? Ich finde da einfach keinen Einstieg ...

Bin für jeden Hinweis dankbar.

Greets,

MIKE
Mike-S ist offline   Mit Zitat antworten
Alt 03-10-2011, 14:49   #2 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Ist das bloß ein visuell anderer button?
Oder möchtest du ihn durch einen Button anderen typs (Klasse) ersetzen, also ein ganz neues Objekt?
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 03-10-2011, 14:53   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 47
Der Button sieht nur anders aus (z.B. andere Farben). Ist aber sonst identisch. Er besitzt also ebenfalls einen hover- und einen gedrückt-Zustand

Sinn dahinter: Nach dem 'Abarbeiten' des Buttons soll erkennbar sein, dass er bereits einmal angeklickt worden ist.

MIKE
Mike-S ist offline   Mit Zitat antworten
Alt 03-10-2011, 15:17   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
das kannst du bspw lösen, indem du einen MC machst, und den already_pressed zustand auf ein zweiten Frame setzt. und dann nur dann musst du nur beim klicken per gotoAndStop("already_pressed") setzen.

mehr Infos können wir nur geben, wenn du zeigst, wie du die Buttons aufgebaut hast. bspw SimpletButton||MovieClip? Hover-state oder animation oder garnix dergleichen? gibbet einen hitTestState, der sich ebenfalls ändern muss?, etc etc.
wäre vielleicht schon ein ColorTransform || ColorMatrixFilter ausreichend, um die Farbänderung durchzuführen? oder sonst irgendein Filter?
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist offline   Mit Zitat antworten
Alt 03-10-2011, 15:18   #5 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
Wilslt du den Button jetzt aus deinen einzelnen Zuständen zusammen bauen, oder hast du die zwei buttons schon fertig vorliegen?

Für zweiteres könnte man das ganze einfach in einen container packen, der entsprechend die buttons austauscht. Der Konstruktor verlangt nach den beiden Buttons, die du nacheinander haben möchtest.

//in Aktion
PHP-Code:
package 
{
    
import flash.display.Sprite;
    
import flash.events.Event;
    
    
/**
     * ...
     * @author milchreis
     */
    
public class Main extends Sprite 
    
{
        
        public function 
Main():void 
        
{
            if (
stageinit();
            else 
addEventListener(Event.ADDED_TO_STAGEinit);
        }
        
        private function 
init(e:Event null):void 
        
{
            
removeEventListener(Event.ADDED_TO_STAGEinit);
            
// entry point
            
            
addChild(new MemorialButton(new Box(0), new Box(0xff0000)));
        }
        
    }
    
}
import flash.display.Sprite;

internal class Box extends Sprite
{
        
        public function 
Box(col:int
        {
            
super();
            
            
graphics.beginFill(col);
            
graphics.drawRect(00200200);
            
graphics.endFill();
        }
        

//Button mit Gedächtnis
PHP-Code:
package  
{
    
import flash.display.InteractiveObject;
    
import flash.display.Sprite;
    
import flash.events.MouseEvent;
    
    
/**
     * I know what you clicked last frame
     * @author milchreis
     */
    
public class MemorialButton extends Sprite
    
{
        private var 
a:InteractiveObjectb:InteractiveObject;
        
        public function 
MemorialButton(button1:InteractiveObjectbutton2:InteractiveObject
        {
            
super();
            
            
button1;
            
button2;
            
            
addChild(a);
            
a.addEventListener(MouseEvent.CLICKonClick);
        }
        
        private function 
onClick(e:MouseEvent):void 
        
{
            
removeChild(a);
            
a.removeEventListener(MouseEvent.CLICKonClick);
            
null;
            
            
addChild(b);
        }
        
    }


Angehängte Dateien
Dateityp: swf activatedbutton.swf (1,4 KB, 5x aufgerufen)
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick
milchreis ist offline   Mit Zitat antworten
Alt 03-10-2011, 15:25   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2009
Beiträge: 47
Super, besten Dank.
Genau, was ich brauche. Noch ein paar Modifikationen ...

Danke!

MIKE
Mike-S ist offline   Mit Zitat antworten
Alt 03-10-2011, 15:29   #7 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
dürfte ich folgende kleine Änderung vorschlagen:
PHP-Code:
package  
{
    
import flash.display.DisplayObject;    //<==
    
import flash.display.Sprite;
    
import flash.events.MouseEvent;
    
    
/**
     * I know what you clicked last frame
     * @author milchreis
     */
    
public class MemorialButton extends Sprite
    
{
        private var 
a:DisplayObjectb:DisplayObject;
        
        public function 
MemorialButton(button1:DisplayObjectbutton2:DisplayObject
        {
            
super();
            
            
button1;
            
button2;
            
            
addChild(a);
            
addEventListener(MouseEvent.CLICKonClick);    //<==
        
}
        
        private function 
onClick(e:MouseEvent):void 
        
{
            
removeEventListener(MouseEvent.CLICKonClick);
            
removeChild(a);
            
null;
            
            
addChild(b);
        }  
    }

so kann der Button auch Bitmaps und Shapes verwenden
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (03-10-2011 um 15:31 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 03-10-2011, 15:37   #8 (permalink)
+ Zimt & Zucker
 
Registriert seit: Mar 2006
Ort: hinterm Mond gleich links
Beiträge: 2.041
aber klar doch! Code ist immer als diskutabel aufzufassen, so wie ein einfacher Textbeitrag.

Hast recht, ist (für den allgemeinen Fall) besser.
Hatte durch die Gegebenheiten die Scheuklappen auf, das nur mit InteractiveObjects zu rechnen ist.
__________________
anbei Grüße vom milchreis: Viva la [Silb]
"Selbst wenn uns nur noch der Zynismus treibt, wir werden trotzdem einfach immer weiter gehen!"

[Von null auf Flash in einem Klick.] <<< klick

Geändert von milchreis (03-10-2011 um 15:39 Uhr)
milchreis ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
austauschen, button

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 16:19 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele