Ovi Maps免费地图导航开始支持E71

诺基亚官方推出的Ovi的服务一下用着它的联系人同步功能,最近Sion换上了5230,大赞自带的Ovi Maps免费地图导航,令人失望的是不支持E71,今天在cnbeta看到已经开始支持E71/E66了,马上下载试用,果然不错,只是现在只能在诺基亚英文官网下载到,而且导航语言里也没有中文。

下载链接:http://nokia.com/maps

四川行

今年春节带托托回家呆到初五,便急匆匆和她一起赶往她成都的家,一呆就是一个多月,在托托父母的率领下,利用周末时间带我们出去游玩,挑战我这几年来缺乏户外活动的身体极限,除了成都的宽窄巷、文殊坊、熊猫基地,还去了都江堰、青城山、乐山大佛、龙泉桃花节、洛带古城等,可以游玩的地方太多了,不愧为“天府之国”。

去了成都当然免不了吃火锅,这也是我这个怀疑有轻度厌食症者的弱项,恰恰前三顿饭还都是火锅,其间还被托托的亲戚们以山东人不可能不会喝酒之由把我灌得惨不忍睹。

最后还得感谢托托妈妈这段时间的照料,让我体重涨了近10斤。:)

今天烟台天气突然又转冷,谢谢Sion在我写日志的时候送给我的可以暖手的煮鸡蛋。

免费网络同步空间SugarSync

说起免费网络同步空间,现在估计很多同学都在用DropBox,今天以前我也在用,决定改用SugarSync的原因有下面几点:

  • SugarSync同步速度快
  • 支持简体中文
  • 支持手机同步
  • 文件管理功能强大

另外SugarSync邀请好友也会像DropBox一样加250MB空间,但无上限,而且一次最多可以获得5G空间,同时被邀请方也会加250MB – 5G空间,相信有兴趣的同学不会不接受我这个邀请吧?
https://www.sugarsync.com/referral?rf=dg38xjsmxhzfa

基于Box2DFlash的碰撞检测管理

去年的这个时候写过一篇关于Box2D的碰撞检测实现《Box2D中使用b2ContactListener进行碰撞检测》,虽然简单,但在需要检测大量碰撞的时候,所有需要在碰撞时触发的事件都要写到那一个继承自b2ContactListener的类中未免显得杂乱,不易管理,如果能把刚体的碰撞处理分开写到各自的UserData类中看起来就好多了。

下面是实现方法和部分代码:
Box2DFlash版本:2.1a
首先需要为刚体的UserData写一个基类,所有用于刚体的UserData继承自该类,注册类中的contactHandle虚拟函数,最终用来在各自的UserData类中处理碰撞。

import Box2D.Dynamics.b2Fixture;
import flash.display.Sprite;
 
public class ShapeBase extends Sprite
{
	public function ShapeBase()
	{
		super();
	}
 
	/**
	 * 处理碰撞检测 
	 * @param shapeBase 与自己发生碰撞的刚体的UserData
	 * @param fixture 与自己发生碰撞的刚体的b2Fixture对象
	 * @param selfFixture 自己刚体的b2Fixture对象
	 */
	public virtual function contactHandle(shape:ShapeBase, fixture:b2Fixture, selfFixture:b2Fixture):void { }
}

然后是两个UserData类,当两个刚体发生碰撞时,就在各自类中的contactHandle方法(这里覆写了基类contactHandle方法)的里做碰撞后的处理。
球形类:

import Box2D.Dynamics.b2Fixture;
import com.lam.runtime.Global;
 
public class ShapeBall extends ShapeBase
{
	public function ShapeBall(x:Number, y:Number, radius:Number)
	{
		super();
	}
 
	// 处理碰撞的事件
	public override function contactHandle(shape:ShapeBase, fixture:b2Fixture, selfFixture:b2Fixture) : void
	{
		// 处理碰撞代码
	}
}

矩形类:

import Box2D.Collision.Shapes.b2Shape;
import com.lam.runtime.Global;
 
public class ShapeRectangle extends ShapeBase
{
	public function ShapeRectangle()
	{
		super();
	}
 
	// 处理碰撞的事件
	public override function contactHandle(shape:ShapeBase, fixture:b2Fixture, selfFixture:b2Fixture) : void
	{
		// 处理碰撞代码
	}
}

然后写一个继承自b2ContactListener的碰撞检测类,在这里触发两个刚体UserData实例的碰撞处理方法。

import Box2D.Collision.*;
import Box2D.Dynamics.*;
import flash.display.Sprite;
import gadgets.ShapeBase;
 
public class ContactListener extends b2ContactListener
{
	public function ContactListener()
	{
		super();
	}
 
	public override function BeginContact(contact:b2Contact):void
	{
		// 得到发生碰撞的两个刚体的b2Fixture实例
		var fixtureA:b2Fixture = contact.GetFixtureA();
		var fixtureB:b2Fixture = contact.GetFixtureB();
		// 根据b2Fixture实例获得它们的UserData实例,当然这些实例都是继承自ShapeBase
		var shapeA:ShapeBase = fixtureA.GetUserData() as ShapeBase;
		var shapeB:ShapeBase = fixtureB.GetUserData() as ShapeBase;
 
		if (fixtureA && fixtureB)
		{
			// 执行两个碰撞刚体各自的碰撞处理
			shapeA.contactHandle(shapeB, fixtureB, fixtureA);
			shapeB.contactHandle(shapeA, fixtureA, fixtureB);
		}
	}
 
}

该文也发表于茶饭后博客-茶馆儿

(blogbus2sinablog)博客大巴到新浪博客的搬家工具

Visual Studio 2010 beta2 早就下载安装,除了刚装完,之后却从来没有打开过,正好碰上咱国家互联网整顿,不幸托托使用的博客大巴(blogbus)遭新网“毒手”,于是建议托托给博客找个大牌点的服务商,最终选择了新浪博客,近百篇的日志又不能白白丢掉,新浪的搬家工具又如同虚设,于是熬夜写了这个工具。


阅读全文 >>