Algodoo腳本進階教程
此教程有關再Algodoo用腳本代碼實現(xiàn)更復雜的功能,不適合新手!
Algodoo腳本新手入門可以看:https://tieba.baidu.com/p/8445647943
或者@灰安教主寫的教程:

1、對象指針
使用對象指針可以遠程操縱一個物體,實現(xiàn)方式:
變量 = {e}????(在onSpawn、postStep等函數(shù)里用)
之后用? 變量.this.xxx? 就可以訪問這個物體的xxx屬性
例:
onSpawn= (e)=>{
????Scene.my.marble = {e}
}?
那么這個物體生成的時候就會將自己綁定到Scene.my.marble這個變量上。
示例圖:


2、Reflection.execudeCode()和eval()
這兩個函數(shù)都是將字符串當成代碼執(zhí)行,但是它們的作用域不同:
Reflection.execudeCode是在全局域執(zhí)行,eval是在局部域執(zhí)行。
例:
eval("scene.my.a" + (2*3+1)+ " = " + 114);
相當于執(zhí)行代碼 scene.my.a7 = 114;
3、數(shù)組
眾所周知,Algodoo中的列表(list)是不能像其他編程語言的數(shù)組那樣修改單個元素的,例如pos = [1 , 1] 可以執(zhí)行,但是 pos(0) = 1 不行。
不過我們也有其它方法來實現(xiàn)可以單點修改的數(shù)組:
用a1,a2,······,an來儲存長度為n的數(shù)組a的各個元素。
再添加以下函數(shù)
就可以用scene.my.get("a"+i) 訪問的值,
用scene.my.assign("a"+i, x)?將賦值為x。
4、擴展for循環(huán)
algodoo自帶的for循環(huán)是這樣的:

可以看到是用遞歸來實現(xiàn)的,效率會比較低,而且循環(huán)次數(shù)n還不能太大(70以上就不行了),否則會導致棧溢出。
我們可以改用下面這個for函數(shù):
這個for函數(shù)的運行速度比Algodoo自帶的快得多,而且由于遞歸層數(shù)少(? 層),循環(huán)次數(shù)可以很大。
code是帶有一個參數(shù)的函數(shù),這個參數(shù)是循環(huán)變量,從s取到e。
示例:


求1+2+3+······+10000
5、隱藏GUI:
在某個物體的update函數(shù)寫上:
就可以在運行的時候隱藏GUI。
附:我現(xiàn)在使用的一些自定義函數(shù):
如果還有其他的不知道怎么用Algodoo腳本實現(xiàn)的功能,可以在評論區(qū)提問,我會在文章中加上。