예를 들자면..
오늘 점심을 자장면으로 할 것인가 오징어덮밥으로 할 것인가.
이번 주말에는 폴아웃3를 할까 L4D 를 할까. 세인츠로우2를 할까.
오른쪽 콧구멍을 먼저 후빌까 왼쪽 콧구......흐음.
그래서 액션스크립트 공부를 겸해 플래시로 만들어 본
랜덤 선택기;;
삭제버튼 추가하느라 삽질했지만,
지난 시절 막코딩에 벗어나 뭔가를 처음 만든 것이라 좋다;
코드보기..
조언 좀... 굽신굽신...ㅡ,.ㅡ;;
package {
import fl.controls.Button;
import fl.controls.Label;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.display.MovieClip;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
public class RandomToDo extends MovieClip {
//속성(멤버변수) 선언
private var startButton:Button;
private var resetButton:Button;
private var addButton:Button;
private var number_label:Array = new Array(10);
private var count_label:uint = 0;
private var label_format:TextFormat = new TextFormat;
private var choice_format:TextFormat = new TextFormat;
private var count_frame:uint = 0;
private var end_time:uint = 60;
//생성자 함수
function RandomToDo() {
setupButton();
inputToDo.addEventListener(KeyboardEvent.KEY_UP,keyupHandler);
label_format.size = 16;
label_format.bold = false;
label_format.font = "맑은 고딕";
choice_format.size = 16;
choice_format.bold = true;
choice_format.font = "맑은 고딕";
// inputToDo.text= "내용을 입력하고 엔터를 누르세요."
}
//버튼 위치와 모양 등등 설정하는 함수
private function setupButton():void {
//무작위로 선택하기 버튼
startButton = new Button();
startButton.move(110,90);
startButton.setSize(150,20);
startButton.label = "무작위로 선택하기";
startButton.addEventListener(MouseEvent.CLICK, startRandom);
addChild(startButton);
//전부지우기 버튼
resetButton = new Button();
resetButton.move(290,90);
resetButton.setSize(80,20);
resetButton.label = "전부 지우기";
resetButton.addEventListener(MouseEvent.CLICK, reset_all);
addChild(resetButton);
//항목추가하기 버튼
addButton = new Button();
addButton.move(415,60);
addButton.setSize(35,20);
addButton.label = "추가";
addButton.addEventListener(MouseEvent.CLICK, addHandler);
addChild(addButton);
}
//항목추가를 위해 추가 버튼 클릭했을 때 실행되는 함수
private function addHandler(event:MouseEvent):void {
addOption();
}
//항목추가를 위해 옵션 입력하고 엔터쳤을때 실행되는 함수
private function keyupHandler(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.ENTER) {
addOption();
}
}
//옵션을 몽땅 지우고 초기화하는 함수
private function reset_all(event:MouseEvent):void {
var l:int;
for (l=0; l
removeChild(number_label[l]);
}
count_label = 0;
}
//랜덤 돌리기 버튼을 클릭했을 때 실행되는 함수
private function startRandom(e:MouseEvent):void {
this.addEventListener(Event.ENTER_FRAME, flicker_label);
}
//선택항목을 입력하여 엔터를 쳤을 때 실행되는 함수
private function addOption():void {
//최대10개라는 메시지 보여주기
if (count_label == 10 && inputToDo.text != ""){
addChild(maxMessage);
maxMessage.play();
}
if (count_label < 10 && inputToDo.text != "") {
//선택항목 텍스트필드 추가하여 표시하기
number_label[count_label] = new OptionLabel();
number_label[count_label].optionText.defaultTextFormat = label_format;
number_label[count_label].optionText.autoSize = TextFieldAutoSize.LEFT;
number_label[count_label].x = 10;
number_label[count_label].y = 110+count_label*28;
number_label[count_label].optionText.text = inputToDo.text;
number_label[count_label].optionText.background = true;
number_label[count_label].optionText.backgroundColor = 0xE0E7ED;
number_label[count_label].optionText.height = 20;
addChild(number_label[count_label]);
number_label[count_label].removeButton.addEventListener(MouseEvent.CLICK, removeOption);
number_label[count_label].buttonNumber = count_label;
count_label++;
}
inputToDo.text ="";
}
//삭제버튼을 클릭했을 때 실행되는 함수
private function removeOption(event:MouseEvent) {
for (var i:int =0; i
if ( event.currentTarget == number_label[i].removeButton ) {
for (var j:int=0; j
if (i+j+1
number_label[i+j].optionText.text = number_label[i+j+1].optionText.text;
}
}
bgcolorReset();
count_label=count_label-1;
removeChild(number_label[count_label]);
break;
}
}
}
//선택 항목의 배경색을 회색으로 정리해주는 함수
private function bgcolorReset():void {
for (var k:int=0; k
number_label[k].optionText.backgroundColor = 0xE0E7ED;
number_label[k].optionText.setTextFormat(label_format);
}
}
//깜빡거리게 하다가 랜덤하게 멈추는 함수
private function flicker_label(event:Event):void {
count_frame++;
var j:int;
for (j=0; j
if (number_label[j].optionText.backgroundColor == 0x6D99CF) {
number_label[j].optionText.backgroundColor = 0xE0E7ED;
j++;
} else {
number_label[j].optionText.backgroundColor = 0x6D99CF;
}
}
if (count_frame == end_time) {
this.removeEventListener(Event.ENTER_FRAME, flicker_label);
//배경색을 다시 회색으로 정리해준다.
bgcolorReset();
//랜덤돌려 선택된 항목에 선택된 TextFormat 적용.
var choice_option:uint =Math.floor(Math.random() * count_label);
number_label[choice_option].optionText.backgroundColor = 0x6D99CF;
number_label[choice_option].optionText.setTextFormat(choice_format);
count_frame = 0;
}
}
}
}
import fl.controls.Button;
import fl.controls.Label;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.display.MovieClip;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
public class RandomToDo extends MovieClip {
//속성(멤버변수) 선언
private var startButton:Button;
private var resetButton:Button;
private var addButton:Button;
private var number_label:Array = new Array(10);
private var count_label:uint = 0;
private var label_format:TextFormat = new TextFormat;
private var choice_format:TextFormat = new TextFormat;
private var count_frame:uint = 0;
private var end_time:uint = 60;
//생성자 함수
function RandomToDo() {
setupButton();
inputToDo.addEventListener(KeyboardEvent.KEY_UP,keyupHandler);
label_format.size = 16;
label_format.bold = false;
label_format.font = "맑은 고딕";
choice_format.size = 16;
choice_format.bold = true;
choice_format.font = "맑은 고딕";
// inputToDo.text= "내용을 입력하고 엔터를 누르세요."
}
//버튼 위치와 모양 등등 설정하는 함수
private function setupButton():void {
//무작위로 선택하기 버튼
startButton = new Button();
startButton.move(110,90);
startButton.setSize(150,20);
startButton.label = "무작위로 선택하기";
startButton.addEventListener(MouseEvent.CLICK, startRandom);
addChild(startButton);
//전부지우기 버튼
resetButton = new Button();
resetButton.move(290,90);
resetButton.setSize(80,20);
resetButton.label = "전부 지우기";
resetButton.addEventListener(MouseEvent.CLICK, reset_all);
addChild(resetButton);
//항목추가하기 버튼
addButton = new Button();
addButton.move(415,60);
addButton.setSize(35,20);
addButton.label = "추가";
addButton.addEventListener(MouseEvent.CLICK, addHandler);
addChild(addButton);
}
//항목추가를 위해 추가 버튼 클릭했을 때 실행되는 함수
private function addHandler(event:MouseEvent):void {
addOption();
}
//항목추가를 위해 옵션 입력하고 엔터쳤을때 실행되는 함수
private function keyupHandler(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.ENTER) {
addOption();
}
}
//옵션을 몽땅 지우고 초기화하는 함수
private function reset_all(event:MouseEvent):void {
var l:int;
for (l=0; l
removeChild(number_label[l]);
}
count_label = 0;
}
//랜덤 돌리기 버튼을 클릭했을 때 실행되는 함수
private function startRandom(e:MouseEvent):void {
this.addEventListener(Event.ENTER_FRAME, flicker_label);
}
//선택항목을 입력하여 엔터를 쳤을 때 실행되는 함수
private function addOption():void {
//최대10개라는 메시지 보여주기
if (count_label == 10 && inputToDo.text != ""){
addChild(maxMessage);
maxMessage.play();
}
if (count_label < 10 && inputToDo.text != "") {
//선택항목 텍스트필드 추가하여 표시하기
number_label[count_label] = new OptionLabel();
number_label[count_label].optionText.defaultTextFormat = label_format;
number_label[count_label].optionText.autoSize = TextFieldAutoSize.LEFT;
number_label[count_label].x = 10;
number_label[count_label].y = 110+count_label*28;
number_label[count_label].optionText.text = inputToDo.text;
number_label[count_label].optionText.background = true;
number_label[count_label].optionText.backgroundColor = 0xE0E7ED;
number_label[count_label].optionText.height = 20;
addChild(number_label[count_label]);
number_label[count_label].removeButton.addEventListener(MouseEvent.CLICK, removeOption);
number_label[count_label].buttonNumber = count_label;
count_label++;
}
inputToDo.text ="";
}
//삭제버튼을 클릭했을 때 실행되는 함수
private function removeOption(event:MouseEvent) {
for (var i:int =0; i
if ( event.currentTarget == number_label[i].removeButton ) {
for (var j:int=0; j
if (i+j+1
number_label[i+j].optionText.text = number_label[i+j+1].optionText.text;
}
}
bgcolorReset();
count_label=count_label-1;
removeChild(number_label[count_label]);
break;
}
}
}
//선택 항목의 배경색을 회색으로 정리해주는 함수
private function bgcolorReset():void {
for (var k:int=0; k
number_label[k].optionText.backgroundColor = 0xE0E7ED;
number_label[k].optionText.setTextFormat(label_format);
}
}
//깜빡거리게 하다가 랜덤하게 멈추는 함수
private function flicker_label(event:Event):void {
count_frame++;
var j:int;
for (j=0; j
if (number_label[j].optionText.backgroundColor == 0x6D99CF) {
number_label[j].optionText.backgroundColor = 0xE0E7ED;
j++;
} else {
number_label[j].optionText.backgroundColor = 0x6D99CF;
}
}
if (count_frame == end_time) {
this.removeEventListener(Event.ENTER_FRAME, flicker_label);
//배경색을 다시 회색으로 정리해준다.
bgcolorReset();
//랜덤돌려 선택된 항목에 선택된 TextFormat 적용.
var choice_option:uint =Math.floor(Math.random() * count_label);
number_label[choice_option].optionText.backgroundColor = 0x6D99CF;
number_label[choice_option].optionText.setTextFormat(choice_format);
count_frame = 0;
}
}
}
}
package {
import flash.display.MovieClip;
import fl.controls.Button;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.events.MouseEvent;
public class OptionLabel extends MovieClip {
public var removeButton:Button;
public var optionText:TextField;
public var buttonNumber:uint = 0;
public function OptionLabel():void {
removeButton = new Button();
removeButton.move(0,2);
removeButton.setSize(38,20);
removeButton.label = "삭제";
optionText = new TextField();
optionText.x = 45;
addChild(removeButton);
addChild(optionText);
}
}
}
import flash.display.MovieClip;
import fl.controls.Button;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.events.MouseEvent;
public class OptionLabel extends MovieClip {
public var removeButton:Button;
public var optionText:TextField;
public var buttonNumber:uint = 0;
public function OptionLabel():void {
removeButton = new Button();
removeButton.move(0,2);
removeButton.setSize(38,20);
removeButton.label = "삭제";
optionText = new TextField();
optionText.x = 45;
addChild(removeButton);
addChild(optionText);
}
}
}
CultBraiN
2009/02/22 12:17
2009/02/22 12:17
Posted by