这才是干货。
有更多的工具是使用其他语言写的。
Square#size
是一个 instance method。
相当于
(65 + rand(25) ).chr
65 = 'A‘ 90 = ’Z‘
这两个图中,分别是什么字体?
#4 楼 @silenceper
json 那个 gem 能编译成功吗?
ruby dk.rb init
运行了吗?
Window 下用 Ruby,DevKit 是必须要配置的,配置过程很简单,看看手册。
这槽吐的。。。说实话,没吐到点子上。
如果按照你上面的用法,即使换了其他 2D API(如:Windows 的 GDI,GDI+,Mac OS 的 Quartz 2D 等),也同样会觉得 实在是太难用了。为什么如此?因为用法不对。因为你忽略了 变换矩阵 这个武器。
一般刚上来用 2D API 时,大都喜欢直接 hardcode,这样做倒是方便,比如能很快的画个线了,矩形,圆等等。如果只是画简单图形,那么 hardcode 就很 OK 了。
但是,一但变换比较多,如果再有什么相对变换,再加上动画之类的,那么 hardcode 就是死路一条。就会象楼主一样,越写越烦,步步谨慎,估计都有摔键盘的冲动;)
通常的做法是把 变换矩阵 用堆栈管理起来,简单的说就是在开始新的变换前,先把当前的变换矩阵入栈保存,然后进行变换,完成后,再把栈顶的变换矩阵 pop,并用其更新当前的变换矩阵。这样做的好处是每次进行新的变换时都不会影响当前的 变换矩阵。如果你接触过一些简单的 2D Game 框架的话,就能理解我说的了。比如用 Canvas 来实现一个 简版的 Cocos2D 的 Node Tree,也是简单的事情。
Canvas 的 transform 和 setTransform 是可以直接修改变换矩阵的两个方法(这两个有区别),你可以参考下。
最后,其实 2D 的图形 API 用法都基本类似。通了原理,其它的看看手册就能上手了。
你在 Linux 下 load 一个 Windows 的 dll , 它会好使吗??好使就见鬼了。
互相理解吧,只要相互沟通好就 OK 了。我很佩服楼主对的 Ruby 的热情,自愧不如啦。哈哈。你的帖子包括转帖我基本上每贴都看过,十分感谢,所以还请以后多发帖,发好贴!另外,管理员的工作也是很辛苦的,我们作为会员更应该体谅!
#12 楼 @yukihiro_matz 给跪了!mruby 可是出自你手啊!还是你来更合适!;) #13 楼 @pynix mruby 的源码不算多,一点一点看就可以了,期待你的源码分析笔记。
看源码的话,建议先从 Ruby 的对象模型入手,这个看明白之后,所有所谓的什么“元编程”就都没什么神秘了。 然后有兴趣可以再看看 Proc 的实现或你其他感兴的 Class。再就可以看 mruby 的 VM 和 GC 了。至词词法,语法,同意 @DeathKing 的看法,先略过就好。mruby 的词法分析就是从 CRuby 那里拿来的,略微调整了一下。再往后,有时间可以看看 字节码的生成等。。。
mruby 是比 lua 大一些,但是没那么夸张。
首先,库文件 (.a) 的 size 并不是最终 link 成可执行程序的 size,库文件只是 .o 文件的集合,mruby 的文件多,自然 .a 文件就大一些。在链接时,并不是库中所有的代码都会进入到可执行程序中,只有用到的才会 link。比如:我们公司一个项目的库文件是 70 M,最终 link 它 的可执行程序只有几 M 而已。
mruby 的可定制性还是不错的:默认的 mruby 带了 core 的扩展 gem,这些 gem 以及第三方 gem 在编译时都可以不要。如果只需要跑字节码的话,parser 的代码也都可以裁掉。
lua 的可执行程序 size:192 k mruby trunk 的 可执行程序 size 为:640 k(其中包括了很多 core 的扩展 gem)
在我的一个 game engine 集成的定制后的 mruby size:约 300K 左右。
300K 和 lua 的近 200K 也相差不大,而且可以使用我喜欢的 Ruby,Ruby 的语言表达力要超 Lua 很多,所以也很值得。
首先你要先有个对象。
Swift 的 Runtime 应该也会在正式发布的时候开放源码出来。
#70 楼 @yukihiro_matz ...... 还是你来这边吧。去年就没来吧。
#20 楼 @luikore 好思路,尤其 [i, s][s.size <=> 0]
这句用的漂亮!
#22 楼 @izzyleung 你太过谦了。我学 Ruby 时,比你差太多了。