actionscript-3 – ActionScript 3中的逐渐减少效果
我需要在影片剪辑上实现逐渐变细的效果,同时保持它与某些引导线对齐.例如,如果我的影片剪辑看起来像这样
转型之后它应该是这样的 这样影片剪辑的形状保持对称,高度不会改变.顶边的长度保持不变.也可以很好地控制两侧的角度,但首先我希望它像上面的图像一样45度. 到目前为止我尝试过的是这个 var m3D:Matrix3D = new Matrix3D(); m3D.appendRotation(-45,Vector3D.X_AXIS); myMC.transform.matrix3D = m3D; 我玩了很长时间,来回添加翻译,但没有结果.这也不起作用 var mcX:Number = myMC.x; var mcY:Number = myMC.y; var mcW:Number = myMC.width; var mcH:Number = myMC.height; m3D.appendTranslation(-(mcX + mcW/2),-mcY,0); m3D.appendRotation(-45,Vector3D.X_AXIS); m3D.appendTranslation(mcX + mcW/2,mcY,0); 我确实找到了DistortImage类,但许可证是用于非商业用途的,它似乎不适用于本机的电影剪辑. similar class看起来很有希望,但与源头的联系已经死亡. 解决方法
Flash使用简单的平截头体模型,其具有视点,投影平面和焦距,即从视点到投影平面的距离.
还有fieldOfView但它应该没有重要意义,因为它的含义似乎被focalLength覆盖. 矩形图形块位于投影平面上,使其顶边的中点位于投影中心.为了达到该效果,矩形旋转一定角度. 问题是,焦距和角度的值应该是多少,以便新的高度和新的底部宽度满足效果所需的某些给定值?或者以数学方式说: 鉴于: >焦距的平截头体 找到未知物并将其应用于透视投影,以获得所需的新高度和新的底部宽度: >截锥体的焦距 拿起一支铅笔,一张纸和Maple(数学软件)并自己解决. var newBottomWidth:Number = 1000; // or any other value var newHeight:Number = myMC.height; // or any other value // the computational part var oldWidth:Number = myMC.width; var oldHeight:Number = myMC.height; var eqRoot:Number = -Math.sqrt(newBottomWidth*newBottomWidth*oldHeight*oldHeight - newHeight*newHeight*oldWidth*oldWidth); var focalLength:Number = Math.abs(eqRoot/(newBottomWidth - oldWidth)); var angle:Number = Math.atan2(eqRoot/(newBottomWidth*oldHeight),newHeight*oldWidth/(newBottomWidth*oldHeight)); var angleDeg:Number = angle*180/Math.PI; myMC.parent.transform.perspectiveProjection = new PerspectiveProjection(); myMC.parent.transform.perspectiveProjection.projectionCenter = new Point(myMC.x + myMC.width/2,myMC.y); myMC.parent.transform.perspectiveProjection.focalLength = focalLength; var m3D:Matrix3D = new Matrix3D(); m3D.appendRotation(angleDeg,Vector3D.X_AXIS); myMC.transform.matrix3D = m3D; 更多信息: > PerspectiveProjection – AS3 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |