实验室  

     

MemoDroid - Android平台上的记忆训练工具

MemoDroid是我最近在Android平台上开发的小软件。

它是一个帮助你增强记忆的工具,你可以用它记忆单词、学习资料等一切你认为有必要记住的东西。

它的原理很简单,我们知道记忆过的东西需要经常复习,否则便会遗忘。而越生疏的东西,需要的复习频率也越高。MemoDroid的工作,就是帮你管理复习频率和找出应当复习的内容。

在MemoDroid的数据库中,你需要记忆的内容都被整理成问题和答案的形式,同时还有每条内容独立难度、复习时间和频率等资料。这些资料决定了MemoDroid应该何时把内容提取出来给你复习。

当MemoDroid运行时,它会自动根据当前的时间来搜索出数据库中已经到期需要复习的内容。而当用户复习完成之后,它又会根据用户的复习情况来调整每条内容的频率等参数。简单来说就是让用户记得越牢的内容,复习周期越长。这样,在一个较长的时间段内,会自然形成生疏的内容复习次数多,熟悉的内容复习次数少。而且你用的越久,数据就会越准确。通过MemoDroid,你复习的效率就会比传统的学习方法提升很多了。

桩考练习

模拟驾照考试的科目二桩考。可以作为熟悉桩考的操作步骤的练习。

小试Box2D物理引擎:停车游戏

一个简单的停车游戏,界面非常简陋,但物理效果应该比绝大多数同类游戏要好。因为是基于Box2D物理引擎制作的,对动力学的模拟相当准确。

Drupal 6 FileField View Type 模块

这个模块是对CCK内建的对View支持的一个强化,它能让用户选择FileField所创建的Field内容作为View的base table,也就是说,突破原来CCK的field内容必须依附node的限制,使node下cck所创建的内容能够独立进行筛选、排序等操作。

当心"stop()"!

This topic is related to AS2.0 .

最近我发现一个非常奇怪的返回值丢失的问题,情况是这样的:

我有一个类A,它继承自MovieClip,并在构造函数中调用了stop()方法。一切看起来都很正常,但是任何创建A的实例的方法的返回值都会丢失。
代码是这样的:
在A.as文件内:

class A extends MovieClip{
  function A(){
    stop();
  }
}

在test.fla文件内:
创建一个空MC,设置linkage id为"testa",并设置AS2.0 class为"A"。
在时间轴上写下下面的代码:

支持载入"obj"文件的Flash 3D引擎


这个3D引擎能够从obj文件中载入模型,而许多3D工具软件都能够输出obj格式,所以你可以在其它软件中建模,然后拿到这个引擎中使用。
我的3D汽车运动模拟就是在这个引擎的基础上建立的。

这个引擎最早是一个as1.0写成的开源3D引擎,我把它用2.0重写,然后增加了许多新的功能。这个引擎最大的特点是它是一个以矢量图形为基础的3D引擎。与其他大多数以点阵图形为基础的引擎不同。这个引擎更适合运行在flash 8.0以前的版本上。flash8之后引入了位图运算,所以更适合用点阵图形的引擎来做。

你可以看到这个引擎的隐藏面消除还有很多问题,这是因为大多数隐藏面消除的算法都是针对点阵图形引擎的,所以在这里我只用了一个很简单的方法来做隐藏面消除,于是在很多模型上的表现并不好。但是如果你能够在模型上多华一些功夫来细化,你一样可以得到很完美的结果。作为例子,你可以载入house.obj看看,这是我专门优化过的一个模型,你可以看到他的表现相当好,几乎看不到什么破绽。

聚合内容