// Created at 27/2/2011 2:14AM // by littleshell package com.blogspot.littleshellMultimedia { import flash.display.Sprite; import flash.display.Graphics; import flash.net.URLRequest; import flash.net.navigateToURL; import flash.events.MouseEvent; [SWF(backgroundColor = "0xFFFFFF", width = "120", height = "90")] public class HelloWorld extends Sprite { public function HelloWorld() { var _homeButton:Sprite = makeButton(); _homeButton.buttonMode = true; _homeButton.addEventListener(MouseEvent.CLICK, homeButton_click); addChild(_homeButton); trace(getMessage()); } //visit Syntax Highlighter's homepage public function gotoSyntaxHighlighterWebsite():void { var _uq:URLRequest = new URLRequest("http://alexgorbatchev.com/SyntaxHighlighter/"); navigateToURL(_uq); } //return the contents of this post private function getMessage():String { var _myMessage:String = ""; _myMessage += "各位好~ 寫了兩篇, 發現要在blogger 落script 異常困難"; _myMessage += "不過昨天小弟找到了解決的方案!!就是Syntax Highlighter !!"; _myMessage += "以後可以貼出像樣的code 了~ :D"; _myMessage += "呢篇野唔知有幾多人識睇呢"; return _myMessage; } private function makeButton():Sprite { var _b:Sprite = new Sprite(); var _g:Graphics = _b.graphics; _g.beginFill(0xFFCCFF); _g.drawRect(0, 0, 32, 32); _g.endFill(); return _b; } private function homeButton_click(e:MouseEvent):void { gotoSyntaxHighlighterWebsite(); } } }
BloggerAds廣告
相關文章
loading..
2011年2月27日 星期日
Syntax Highlighter
標籤:
CSS
2011年2月24日 星期四
解決 AS2 Sound class 不能獨立調整聲音問題
暫時這blog 都未有人流, 小弟暫且假設到我blog 的人對AS都有認識
若各下真的看不懂的話歡迎私底下和小弟聯絡
不知道這個問題是否很多人都懂解決
沒所謂了,還是分享一下,也許對一些人會有幫助
請看看以下的code:
如果我按下了btnBGSoundSwitcher將會發生甚麼事呢??
我猜大家都會覺得只餘下effectSound 會在響吧
不過對不起, 大家都錯了
結果是兩個聲都會一塊兒消失
AS2裡的Sound class 確實是很麻煩
根據文檔, Sound.setVolume()這個 method 是一個instance method
那就是說, 這個method 理論上是對Sound class 的instance生效
可是不知怎的這個 method 會對全世界的Sound instance 生效
解決方法就是用channel 的概念 --- 每個聲源都由獨立的聲軌負責
Sound class的constructor帶一個參數 -- target:Object
不過另一個問題出現
他說是Object, 小弟今天測試過是不行的
一定要是MovieClip
嗚.....這樣要寫個SoundChannel class 就好煩了
既然要用MovieClip
那就是說我現在有兩個channel -- 一個播音樂, 一個播音效
就要用兩個MovieClip了
其實....AS2 裡我不太喜歡好段段開粒不是用來display 的MovieClip
改寫頭8行:
再試試~
只餘下聲效了:D
若各下真的看不懂的話歡迎私底下和小弟聯絡
不知道這個問題是否很多人都懂解決
沒所謂了,還是分享一下,也許對一些人會有幫助
請看看以下的code:
var withBGSound:Boolean = true; var withEffectSound:Boolean = true; var bgSound:Sound = new Sound(); //background music var effectSound:Sound = new Sound(); //sound effect init(); function init():Void { bgSound.attachSound("bg_sound"); bgSound.start(0, 9999); btnBGSoundSwitcher.onRelease = btnBGSoundSwitcher_onRelease; btnEffectSoundSwitcher.onRelease = btnEffectSoundSwitcher_onRelease; } //do somthing then play the effect sound function shoot():Void { //do somthing if(withEffectSound){ effectSound.attachSound("bomb_sound"); effectSound.start(0, 1); } } //onRelease handler for btnBGSoundSwitcher, used to switch on/off the background music function btnBGSoundSwitcher_onRelease():Void { if (withBGSound) { withBGSound = false; bgSound.setVolume(0); }else { withBGSound = true; bgSound.setVolume(100); } } //onRelease handler for btnEffectSoundSwitcher, used to switch on/off the effect sound function btnEffectSoundSwitcher_onRelease():Void { if (withBGSound) { withBGSound = false; bgSound.setVolume(0); }else { withBGSound = true; bgSound.setVolume(100); } } |
我猜大家都會覺得只餘下effectSound 會在響吧
不過對不起, 大家都錯了
結果是兩個聲都會一塊兒消失
AS2裡的Sound class 確實是很麻煩
根據文檔, Sound.setVolume()這個 method 是一個instance method
那就是說, 這個method 理論上是對Sound class 的instance生效
可是不知怎的這個 method 會對全世界的Sound instance 生效
解決方法就是用channel 的概念 --- 每個聲源都由獨立的聲軌負責
Sound class的constructor帶一個參數 -- target:Object
不過另一個問題出現
他說是Object, 小弟今天測試過是不行的
一定要是MovieClip
嗚.....這樣要寫個SoundChannel class 就好煩了
既然要用MovieClip
那就是說我現在有兩個channel -- 一個播音樂, 一個播音效
就要用兩個MovieClip了
其實....AS2 裡我不太喜歡好段段開粒不是用來display 的MovieClip
改寫頭8行:
var withBGSound:Boolean = true; var withEffectSound:Boolean = true; var mcBGSoundChannel:MovieClip = this.createEmptyMovieClip("mcBGSoundChannel", 0); var mcEffectSoundChannel:MovieClip = this.createEmptyMovieClip("mcEffectSoundChannel", 1); var bgSound:Sound = new Sound(mcBGSoundChannel); //background music var effectSound:Sound = new Sound(mcEffectSoundChannel); //sound effect |
再試試~
只餘下聲效了:D
標籤:
AS2
2011年2月16日 星期三
在ActionScript裡防止以Cheat Engine 修改數值
上年一個專案中客戶竟然想到要用Cheat Engine 來試
結果數值事無忌憚地被修改
煩擾了一星期總算有點微目,小弟在這裡分享一下
是次的測試環境為:
Windows XP SP3
Flash CS3 ActionScript 3 FlashPlayer 9
Cheat Engine 5.5
我們要測試的是myNum這個數
我用最正路的方法define myNum, 並以一個textField 來顯示
做了一個button來改變myNum:
遺憾地
這個寫法小弟只用了三次高階搜尋就能找出並鎖住myNum了
那解決方法呢??
其實不難
我的做法就是把myNum塞進object 就可以了:
同樣, Cheat Engine 三次高階搜尋就能找出myNum的值, 不過已經鎖不住myNum了~ : D
小弟亦以2bytes 及4bytes低階搜尋測試, 前者結果一樣, 後者五十多個怪怪的result, 改不了
有朋友或者會問, AS2 呢??
這個很有趣
我把profile 調成ActionScript2 FlashPlayer 8
並以下面的code 測試
結果不論高階或是低階, 2bytes 或4bytes , 也都搜尋不到myNum
因為AS2對數字只有Number可用, 是個浮點數 , 故小弟還測試過以Float truncated搜尋, 結果一樣都是搜尋不到myNum
若然各位高手有破解之法或更好的預防方法, 還望賜教
結果數值事無忌憚地被修改
煩擾了一星期總算有點微目,小弟在這裡分享一下
是次的測試環境為:
Windows XP SP3
Flash CS3 ActionScript 3 FlashPlayer 9
Cheat Engine 5.5
我們要測試的是myNum這個數
我用最正路的方法define myNum, 並以一個textField 來顯示
做了一個button來改變myNum:
var txtDisplay:TextField = new TextField(); var storage:Object = new Object(); var myNum:int = 0; txtDisplay.autoSize = TextFieldAutoSize.LEFT; txtDisplay.appendText(myNum.toString()); addChild(txtDisplay); btn.addEventListener(MouseEvent.CLICK, btn_click); function btn_click(e:MouseEvent) { myNum++; txtDisplay.text = myNum.toString(); } |
遺憾地
這個寫法小弟只用了三次高階搜尋就能找出並鎖住myNum了
那解決方法呢??
其實不難
我的做法就是把myNum塞進object 就可以了:
var txtDisplay:TextField = new TextField(); var storage:Object = new Object(); storage.myNum = 0; 就是把myNum塞進一個object裡 txtDisplay.autoSize = TextFieldAutoSize.LEFT; txtDisplay.appendText(storage.myNum.toString()); addChild(txtDisplay); btn.addEventListener(MouseEvent.CLICK, btn_click); function btn_click(e:MouseEvent) { storage.myNum++; txtDisplay.text = storage.myNum.toString(); } |
同樣, Cheat Engine 三次高階搜尋就能找出myNum的值, 不過已經鎖不住myNum了~ : D
小弟亦以2bytes 及4bytes低階搜尋測試, 前者結果一樣, 後者五十多個怪怪的result, 改不了
有朋友或者會問, AS2 呢??
這個很有趣
我把profile 調成ActionScript2 FlashPlayer 8
並以下面的code 測試
var myNum:Number = 0; var txtDisplay:TextField = this.createTextField("txtDisplay", 0,0,0,0,0); txtDisplay.autoSize = true; txtDisplay.text = myNum.toString(); btn.onRelease = function(){ myNum++; txtDisplay.text = myNum.toString(); } |
因為AS2對數字只有Number可用, 是個浮點數 , 故小弟還測試過以Float truncated搜尋, 結果一樣都是搜尋不到myNum
若然各位高手有破解之法或更好的預防方法, 還望賜教
標籤:
AS2
,
AS3
,
cheat engine
訂閱:
文章
(
Atom
)