左眼看世界
轩飞的博客
轩飞的博客
Aug 31st
第5届FLASH开发者交流会将于9月18日举行,这次的活动升级为 Flash Camp 2010
Adobe的平台技术总监Gary Zhu会介绍 Adobe 平台技术的发展和Flash移动应用软件的开发,还有诸多高手带来游戏开发和AIR应用的经验之谈。我有幸得到邀请分享Flash RIA可用性方面的一些体会。
活动在线报名地址:http://www.wedoswf.com/events/1
嗯,广告很短,总算完成作业了
9.18,我们不见不散!
Aug 31st
一眨眼一定到月底了,这个月的两篇作业还没做,为了证明我是个言而有信的人,临时抱佛脚补上两篇,晚点比没有强!
之前做项目的时候需要在UI上画一些虚线和直线,于是封装了这个Flex简单画线组件,实现在任意两点间画线,可以指定线型,颜色,粗细,虚线还可以指定线段长度和间隔。
具体实现不解释了,代码会说话。
package me.xuanfei.common.component
{
import flash.display.CapsStyle;
import flash.display.Shape;
import mx.core.UIComponent;
public class SimpleLine extends UIComponent
{
public static const SOLID:String = "solid";
public static const DASH:String = "dash";
private var _shape:Shape = new Shape();
private var _type:String = SOLID;
private var _x1:Number = 0;
private var _y1:Number = 0;
private var _x2:Number = 200;
private var _y2:Number = 0;
private var _thickness:Number = 0;
private var _color:uint = 0x000000;
private var _dashPattern:Array = [3, 2]
public function SimpleLine()
{
super();
}
override protected function updateDisplayList(w:Number,h:Number):void{
super.updateDisplayList(w,h);
_shape.graphics.lineStyle(thickness, color, 1, true, "normal", CapsStyle.NONE);
_shape.graphics.moveTo(x1, y1);
switch(type)
{
case SOLID:
_shape.graphics.lineTo(x2, y2);
break;
case DASH:
drawDash();
break;
}
addChild(_shape);
}
private function drawDash():void
{
var w:Number = x2 - x1;
var h:Number = y2 - y1;
var length:Number = Math.sqrt((w)*(w) + (h)*(h));
var units:Number = length/(dashPattern[0]+dashPattern[1]);
var dashSpaceRatio:Number = dashPattern[0]/(dashPattern[0]+dashPattern[1]);
var dashW:Number = (w/units)*dashSpaceRatio;
var spaceW:Number = (w/units)-dashW;
var dashH:Number = (h/units)*dashSpaceRatio;
var spaceH:Number = (h/units)-dashH;
while (length > 0)
{
x1 += dashW;
y1 += dashH;
length -= dashPattern[0];
if (length < 0)
{
x1 = x2;
y1 = y2;
}
_shape.graphics.lineTo(x1, y1);
x1 += spaceW;
y1 += spaceH;
_shape.graphics.moveTo(x1, y1);
length -= dashPattern[1];
}
_shape.graphics.moveTo(x2, y2);
}
[Bindable]
public function get type():String
{
return _type;
}
public function set type(value:String):void
{
_type = value;
}
[Bindable]
public function get x1():Number
{
return _x1;
}
public function set x1(value:Number):void
{
_x1 = value;
}
[Bindable]
public function get y1():Number
{
return _y1;
}
public function set y1(value:Number):void
{
_y1 = value;
}
[Bindable]
public function get x2():Number
{
return _x2;
}
public function set x2(value:Number):void
{
_x2 = value;
}
[Bindable]
public function get y2():Number
{
return _y2;
}
public function set y2(value:Number):void
{
_y2 = value;
}
[Bindable]
public function get thickness():Number
{
return _thickness;
}
public function set thickness(value:Number):void
{
_thickness = value;
}
[Bindable]
public function get color():uint
{
return _color;
}
public function set color(value:uint):void
{
_color = value;
}
[Bindable]
public function get dashPattern():Array
{
return _dashPattern;
}
public function set dashPattern(value:Array):void
{
_dashPattern = value;
}
}
}
在MXML中调用也很简单:
<comp:SimpleLine type=”dash” color=”#999999″ x2=”200″/>
这样就可以画一条200px宽的水平灰色虚线(comp是声明的Namespace)。
Jul 11th
Jul 11th
在界面效果复杂或者组件需要复杂的开场动画时,常常会在Flash中用时间轴或者Tween类制作动画,并发布为UIMovieClip组件,在Flex中引用。
由于Flex会自动计算UIMovieClip的大小,所以如果动画过程中Symbol有位移或者大小的变化,就会造成在Flex中显示的时候组件本身会发生连续位移。
第一反应是设置组件的explicitWidth和explicitHeight来固定大小,结果位移是没有了,但是动画过程中,原件会不断的缩放。
解决这个问题,我采用的方法是在Flash中加入一层透明的图形填充来标示实际的组件大小,这样Flex中组件的大小就固定了。
这个方法比较Dirty,如果你有更好的方法,欢迎留言!
Jul 8th
最近把我的Firefox升级到最新的3.6.6以后,调试Flash的时候,只要有异常,弹出异常窗口以后,Firefox就不响应了,过一会会显示Flash插件崩溃的信息,只能通过任务管理器强行关闭Firefox。
反复多次之后,我求助了Google大神,原来这个问题还挺普遍的,具体可以看这里。
按照帖子里说的,解决方案如下:
Jul 2nd
忙于琐事,停博很久了,懒得割草,所以换片地重新开始。
xuanfei.me是俺的新域名,blog.inmedia.cn肯定不会再用了,inmedia.cn那个域名我也不准备再用了,出让给需要的朋友吧!
最近在做一款有趣的产品,稍后和大家分享!
更新还是不会频繁,尽量做到每月至少二博,避免长草,请大家监督!
最近开始用腾讯围脖,推特还是会不定期更新。
附上一些腾讯围脖邀请:
Sep 1st
Aug 11th
由于众所周知的原因,中国网友不能直接访问Twitter了,虽然咱都会带Tor,会翻墙,可是翻上翻下的真的很累,有没有不翻墙访问Twitter的方式呢?可以有!
打开hosts文件加入如下内容:
168.143.161.20 twitter.com
168.143.161.20 www.twitter.com
128.121.146.229 assets0.twitter.com
128.121.146.229 assets1.twitter.com
128.121.146.101 static.twitter.com
128.121.146.229 assets2.twitter.com
128.121.146.229 assets3.twitter.com
65.74.185.41 twitter.zendesk.com
65.74.185.41 help.twitter.com
168.143.162.107 search.twitter.com
hosts文件的位置:
/private/etc/hosts /etc/hosts使用https://twitter.com访问twitter页面
tips: Firefox用户建议安装GreaseMonkey并添加这个脚本:http://userscripts.org/scripts/show/29090,可以实现自动的安全链接访问,http->https
如果你有一个支持PHP 5.2的国外主机,完全可以试试自己架设基于Dabr的Twitter界面,具体见http://code.google.com/p/dabr/。
这个是我架的dabr服务,欢迎试用:http://amp3.cn
在墙面前,作为一颗蛋,我选择和其他的蛋站在一起…
我的Twitter: https://twitter.com/NBAction
Jul 24th
看来不是只有我觉得M$的Surface卖5万美刀是在抢钱,几位加州艺校(California Institute of the Arts)的学生使用这些东西捣鼓出了的山寨版的 Surface:一个台面是毛玻璃的桌子,一个投影仪,一组红外投射LED灯,一个摄像头,一个红外透镜以及一台电脑。视频里演示了交互效果,果然很艺术,有沙画的感觉。
想了解更多,请移步他们的blog
Roots Multi Touch Tangible Installation Teaser from BricK Table on Vimeo.