我想在我的照片库中添加功能 - 照片大拇指的不同类型的动画。现在我确实喜欢下面的代码。一切都很好,但我希望拇指从舞台的边缘弹开。
最重要的是,我需要不同的动画模式 - 作为3D旋转木马的动作,旋转成圆形,太阳光线和背部的运动等等。
如果你有这些和类似动画的现成代码,我将非常感激。
[Bindable] private var stageW:int = Capabilities.screenResolutionX;
[Bindable] private var stageH:int = Capabilities.screenResolutionY;
private var itemsVector:Vector.<Image>=new Vector.<Image>();
private var xSpeedVector:Vector.<Number>=new Vector.<Number>();
private var ySpeedVector:Vector.<Number>=new Vector.<Number>();
stage.addEventListener(Event.ENTER_FRAME, update);
private function moveSetup():void {
for(var i:int = 0; i < FlexGlobals.topLevelApplication.objects.length; i++){
if (FlexGlobals.topLevelApplication.objects[i] is Image){
var item:Image=FlexGlobals.topLevelApplication.objects[i] as Image;
item.x=Math.random()*stageW;
item.y=Math.random()*stageH;
var randomDirection:Number=Math.random()*2*Math.PI;
this.addElement(item);
itemsVector.push(item);
xSpeedVector.push(2*Math.cos(randomDirection));
ySpeedVector.push(2*Math.sin(randomDirection));
}
}
}
protected function update(event:Event):void {
for(var i:uint=0;i<itemsVector.length;i++){
itemsVector[i].x+=xSpeedVector[i];
itemsVector[i].y+=ySpeedVector[i];
if(itemsVector[i].x>stageW){
itemsVector[i].x-=stageW;
}
if(itemsVector[i].x<0){
itemsVector[i].x+=stageW;
}
if(itemsVector[i].y>stageH){
itemsVector[i].y-=stageH;
}
if(itemsVector[i].y<0){
itemsVector[i].y+=stageH;
}
}
}
答案 0 :(得分:1)
看看Greensock's TweenLite library这几乎是Flash中动画的标准(并且,作为一个额外的奖励,最近已经ported to JavaScript)。
它支持各种设置缓动功能,包括反弹功能。该库的付费版本甚至包括创建自定义缓动功能的功能。在我链接到的第一页的中间有一个交互式演示,它允许您现场使用库并测试各种缓动功能。
谷歌搜索将出现各种教程,解释如何构建(伪)3D轨道旋转木马,以及做同样的第三方组件。实际上,通过相当简单的三角测量,这些实现铰链相对简单。 This example似乎为您提供合理的起点以适应您的特定要求。
3D效果当然可以在Flex中实现。我建议你看看Away3D这是一个为Flash平台编写的开源3D库。有一个在Away3D中实现的水平螺旋效果的例子(以及完整的源代码)here。