Category: Code Lib


Pinch Gesture in iOS

又是很久没有更新blog了。最近的这一两个月呆在厦门算是闭关修炼,边学边做iOS应用。先是研究了各种JS Framework,并用Sencha Touch做了一个Web app。然后大部分精力都花在啃iOS SDK上,现在也算小有收获。

出于一贯的兴趣,学会iOS程序基础以后,最早开始深入研究的就是动画和交互部分。iOS设备的多点触摸功能是一个很有意思的课题,今天我们就来探讨一下Pinch手势的一个小应用:模拟iPad Photo程序里那种照片层叠的打开和关闭效果。

首先要知道在UIKit里的显示对象UIView不像Flash那样有rotation属性来改变旋转值,所以必须通过构造变换矩阵来实现旋转。

view.transform = CGAffineTransformMakeRotation(radian);

以下代码演示了如何构造包含旋转和位移两种变换的变换矩阵: View full article »

在Flash自带的ComboBox组件中,下拉列表部分是被加到主场景(Stage)上的。这就带来一些问题:比如ComboBox放在一个运动着的可视对象上,点开下拉列表后,这部分并不会跟随着父物体运动。如果父物体是三维层,下拉列表也不会继承上层的属性,这就会造成视觉上的问题。

下面的代码演示了一个不修改ComboBox源代码的前提下解决这个问题的小技巧。思路很简单:监听下拉列表的打开和关闭事件,动态改变dropdown对象的parent。

// cb is a ComboBox instance
 
cb.addEventListener(Event.OPEN, openHandler, false, 0, true);
cb.addEventListener(Event.CLOSE, closeHandler, false, 0, true);
 
private function openHandler(event : Event) : void
{
	// wait one frame
	addEventListener(Event.ENTER_FRAME, tick, false, 0, true);
}
 
private function closeHandler(event : Event) : void
{
	// hide dropdown
	cb.dropdown.visible = false;
 
	// add dropdown back to stage
	stage.addChild(cb.dropdown);
}
 
private function tick(event : Event) : void
{
	removeEventListener(Event.ENTER_FRAME, tick);
 
	// add dropdown to another parent
	someContainer.addChild(cb.dropdown);
	// reposition dropdown if needed
	cb.dropdown.move(cb.x, cb.y + cb.height);
	// show dropdown
	cb.dropdown.visible = true;
}

https://gist.github.com/721420

Flash Fluid

MSAFluid是一套Processing上的流体模拟类库,程序员Eugene将其移植到了Flash上。

点击上图查看,效果很不错!这里有Processing版本的演示,可以比对一下执行效率。源代码近期放出。

下载代码

via

Powered by KevinCao.com ©2010 | Platform: WordPress | Theme: Motion
kevincao.com