Flash 板


LINE

※ 引述《morphise (QQQQQ)》之铭言: : 目前老师出了一个设计小游戏的题目 : 老师要我们在画面上绘制几个方块 : 然後每个方块从红橙黄绿蓝靛紫七种颜色中随机挑选 : 每个方块被按到的时候就会按照上面的颜色顺序变换 : 变到紫色後就在跳回红色 : 然後我希望是使用者要在这七个方块的颜色搭配上达到一定的组合後 : 才可以进行下一步 : 举例来说就是要一直按方块来改颜色达到像是这个组合才成功 ▉▉▉▉▉▉▉ : 目前我用tweenLite to 来变换颜色 : 但是却没办法设定哪一个方块颜色被改了 而且改成甚麽 : 所以也没办法用if来看是否达到正确组合 : 板上有人可以指点一下方向应该是大概要怎麽做吗? : (因为才刚上4,5堂课 : 所以老师只教了基本的东西 : 我想破头都想不到要怎麽用老师教的东西做这个作业) 我用了最阳春的笨方法写出来了 以下是程式内容 不知道有没有人知道有什麽方法可以不要写五个functions来跑?XD package { import flash.display.Sprite; import flash.events.MouseEvent; import com.greensock.*; import com.greensock.easing.*; import com.greensock.plugins.*; public class Main extends Sprite { public var allBlocks:Array; public var totalItems:uint; public var red:Number = 0xff0000; public var green:Number = 0x00ff00; public var blue:Number = 0x0000ff; public var yellow:Number = 0xffff00; public var pink:Number = 0xff00ff; public var color:Array; public var answer:Number = 0; public function Main() { allBlocks = new Array(); color = new Array(); totalItems = 5; for (var i:uint; i < totalItems; i++) { var randomNum:Number = Math.round(Math.random()); if (randomNum <= .2) color[i] = red; if (.2< randomNum && randomNum <= .4) color[i] = green; if (.4< randomNum && randomNum <= .6) color[i] = blue; if (.6< randomNum && randomNum <= .8) color[i] = yellow; if (.8< randomNum && randomNum <= 1) color[i] = pink; var tempBlocks:DrawBlocks = new DrawBlocks (color[i]); tempBlocks.x = 30 + stage.stageWidth/5 * i; tempBlocks.y = stage.stageHeight/2; allBlocks.push(tempBlocks); addChild (allBlocks[i]); } trace("To unlock, you need to find the combination below"); trace("Red Green Blue Yellow Pink"); if (color[0] == red) answer = answer +1; if (color[1] == green) answer = answer +1; if (color[2] == blue) answer = answer +1; if (color[3] == yellow) answer = answer +1; if (color[4] == pink) answer = answer +1; endGame(answer); trace(answer); allBlocks[0].addEventListener(MouseEvent.MOUSE_DOWN, firstMouseClickHandler); allBlocks[1].addEventListener(MouseEvent.MOUSE_DOWN, secondMouseClickHandler); allBlocks[2].addEventListener(MouseEvent.MOUSE_DOWN, thirdMouseClickHandler); allBlocks[3].addEventListener(MouseEvent.MOUSE_DOWN, forthMouseClickHandler); allBlocks[4].addEventListener(MouseEvent.MOUSE_DOWN, fifthMouseClickHandler); } public function firstMouseClickHandler (e:MouseEvent) : void { TweenPlugin.activate([TintPlugin]); var checktimes:Boolean = true; if (color[0] == pink) { color[0] = red; checktimes = false; } if (color[0] == yellow) color[0] = pink; if (color[0] == blue) color[0] = yellow; if (color[0] == green) color[0] = blue; if (color[0] == red && checktimes == true) { color[0] = green; answer = answer - 1; } if (color[0] == red) answer = answer + 1; checktimes = true; TweenLite.to(e.target, .1, {tint:color[0]}); trace(answer); endGame (answer); } public function secondMouseClickHandler (e:MouseEvent) : void { TweenPlugin.activate([TintPlugin]); var checktimes:Boolean = true; if (color[1] == pink) { color[1] = red; checktimes = false; } if (color[1] == yellow) color[1] = pink; if (color[1] == blue) color[1] = yellow; if (color[1] == green) { color[1] = blue; answer = answer - 1; } if (color[1] == red && checktimes == true) color[1] = green; if (color[1] == green) answer = answer + 1; checktimes = true; TweenLite.to(e.target, .1, {tint:color[1]}); trace(answer); endGame (answer); } public function thirdMouseClickHandler (e:MouseEvent) : void { TweenPlugin.activate([TintPlugin]); var checktimes:Boolean = true; if (color[2] == pink) { color[2] = red; checktimes = false; } if (color[2] == yellow) color[2] = pink; if (color[2] == blue) { color[1] = yellow; answer = answer - 1; } if (color[2] == green) color[2] = blue; if (color[2] == red && checktimes == true) color[2] = green; if (color[2] == blue) answer = answer + 1; checktimes = true; TweenLite.to(e.target, .1, {tint:color[2]}); trace(answer); endGame (answer); } public function forthMouseClickHandler (e:MouseEvent) : void { TweenPlugin.activate([TintPlugin]); var checktimes:Boolean = true; if (color[3] == pink) { color[3] = red; checktimes = false; } if (color[3] == yellow) { color[1] = pink; answer = answer - 1; } if (color[3] == blue) color[3] = yellow; if (color[3] == green) color[3] = blue; if (color[3] == red && checktimes == true) color[3] = green; if (color[3] == yellow) answer = answer + 1; checktimes = true; TweenLite.to(e.target, .1, {tint:color[3]}); trace(answer); endGame (answer); } public function fifthMouseClickHandler (e:MouseEvent) : void { TweenPlugin.activate([TintPlugin]); var checktimes:Boolean = true; if (color[4] == pink) { color[4] = red; checktimes = false; answer = answer - 1; } if (color[4] == yellow) color[4] = pink; if (color[4] == blue) color[4] = yellow; if (color[4] == green) color[4] = blue; if (color[4] == red && checktimes == true) color[4] = green; if (color[4] == pink) answer = answer + 1; checktimes = true; TweenLite.to(e.target, .1, {tint:color[4]}); trace(answer); endGame (answer); } public function endGame ( corrects:uint) : void { if ( corrects == 5 ) trace("UNLOCKED!"); } } } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 76.124.81.21
1F:→ aquarianboy:比较简单的,就是只要写一个event handler就行了 03/14 09:24
2F:→ aquarianboy:然後在event handler里用switch判断是哪颗按钮被按了 03/14 09:24
3F:→ aquarianboy:高级一点点的话,可以用strategy pattern来代替switch 03/14 09:26
4F:→ zephyrhymn:数量不多 用pattern反而显得累赘 03/14 11:03
5F:推 peacedove:写个class?? 03/14 12:41
6F:→ peacedove:我没很仔细看code 可是如果做的事情都一样 不是一个 03/14 12:43
7F:→ peacedove:function就可以了吗?? 03/14 12:43
8F:→ dsmwang:可以用7的次方数来当作确认标准...XD 03/14 12:51
9F:→ dsmwang:就不需要一堆if了 03/14 12:51
10F:推 KawasumiMai:为什麽不要用btn包mc,然後呼叫click event就好 03/14 16:51
11F:→ KawasumiMai:外观的颜色不要当作判断标准,用阵列比对就好 03/14 16:52
12F:推 etrexetrex:你的code 很有趣XD 03/14 20:20
13F:→ zephyrhymn:可以用多型的概念来写...重复code太多 03/16 17:08
14F:→ zephyrhymn:同一阶层的判断switch会比if好很多尤其判断数量多时 03/16 17:09
15F:→ morphise:哈哈 会这麽写是因为老师还没教到button跟mc 03/17 09:55
16F:→ morphise:我也希望可以不要用那个多function来判断 可是我试很多次 03/17 09:56
17F:→ morphise:都不知道要怎麽用for loop来跑 03/17 09:57
18F:→ morphise:为什麽我的code很有趣阿XD 03/17 09:57
19F:→ morphise:要怎麽样才可以判断是哪个方块被按了阿? 03/17 10:29
20F:→ aquarianboy:试试 event.currentTarget 03/17 11:52
21F:→ morphise:可是老师希望我们用他之前上课教的东西就好 03/17 12:25
22F:→ morphise:他说用他教过的东西就可以写出来了 可是大家给的建议他都 03/17 12:26
23F:→ morphise:没教过... 03/17 12:26
24F:→ morphise:我现在最大的问题是不知道怎麽让系统知道我点的方块是第 03/17 12:27
25F:→ morphise:几个方块 如果这个问题解决的话 程式就会精简很多 03/17 12:28







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP