Skip to content

Instantly share code, notes, and snippets.

@dadon
Last active February 10, 2016 12:36
Show Gist options
  • Save dadon/a7b924d532ada40243c6 to your computer and use it in GitHub Desktop.
Save dadon/a7b924d532ada40243c6 to your computer and use it in GitHub Desktop.
package ;
import openfl.Assets;
import openfl.display.Sprite;
import openfl.display.Bitmap;
import openfl.text.TextField;
import openfl.events.MouseEvent;
class CustomButton extends Sprite {
var button:Sprite;
var buttonText:String;
var buttonTextField:TextField;
var clickCallback:CustomButton->Void;
public function new(buttonBgPath:String, text:String, onClick:CustomButton->Void):Void {
super();
buttonText = text;
clickCallback = onClick;
var buttonBitmap = new Bitmap(Assets.getBitmapData(buttonBgPath));
button = new Sprite();
button.addChild(buttonBitmap);
button.addEventListener(MouseEvent.CLICK, onClick);
}
public function showText():Void {
if (buttonTextField == null) {
buttonTextField = new TextField();
buttonTextField.text = buttonText;
addChild(buttonTextField);
}
}
public function hideText():Void {
if (buttonTextField != null) {
removeChild(buttonTextField);
buttonTextField = null;
}
}
private function onClick(e:MouseEvent):Void {
clickCallback(this);
}
}
package;
import openfl.display.Sprite;
class Main extends Sprite {
private var button1Menu:CustomButton;
private var button2Menu:CustomButton;
public function new() {
super();
button1Menu = new CustomButton("path/button1", "Some text for Button 1", showButtonsText);
button1Menu = new CustomButton("path/button2", "Some text for Button 2", showButtonsText);
}
private function showButtonsText(currentButton:CustomButton):Void {
button1Menu.hideText();
button2Menu.hideText();
currentButton.showText();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment