Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Actionscript 3.0中的材质设计UI(高级动画)?_Android_Actionscript 3_User Interface_Animation_Material Design - Fatal编程技术网

Android Actionscript 3.0中的材质设计UI(高级动画)?

Android Actionscript 3.0中的材质设计UI(高级动画)?,android,actionscript-3,user-interface,animation,material-design,Android,Actionscript 3,User Interface,Animation,Material Design,在android的动画上实现这些东西的最佳方式是什么?(投下阴影、轻松等) 我找到了一个简单的方法来获得这种效果;通过在“AppContainer”类的时间线中使用tweens设置我的UI动画,并按照如下方式设置我的文档类: package { import flash.display.MovieClip; import flash.display.Stage; import flash.display.StageAlign; import flash.dis

在android的动画上实现这些东西的最佳方式是什么?(投下阴影、轻松等)

我找到了一个简单的方法来获得这种效果;通过在“AppContainer”类的时间线中使用tweens设置我的UI动画,并按照如下方式设置我的文档类:

package  {

    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

    public class Groot extends MovieClip {

        public var appContainer = new AppContainer;


    public function Groot() {

            stage.scaleMode = StageScaleMode.SHOW_ALL;
            stage.align = StageAlign.TOP_LEFT;          
            appContainer.width = stage.stageWidth;
            appContainer.height = stage.stageHeight;
            addChild(appContainer);         
        }

}
}
从这里开始,这只是一个事件Lesterns和gotoAndPlay/Stop()的问题;命令。但是,如果我不希望边框的纵横比“错误”,我必须使用:

StageScaleMode.EXACT_FIT
以及相对物体的定位。(除了所需的复杂动画外,这本身并不是什么大问题)。这样就排除了在任何时间范围内工作的可能性,而这正是让我不知所措的地方

现在,我可以使用如下方法设置一个类来轻松处理相对定位:

package  {

    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

    public class Groot extends MovieClip {

        var pos = new PositionHandler();
        var appContainer = new AppContainer;

    public function Groot() {

            stage.scaleMode = StageScaleMode.SHOW_ALL;
            stage.align = StageAlign.TOP_LEFT;          
            pos.startPos(appContainer)
            addChild(appContainer);         
        }

}
}
使用类来处理各种相对位置函数:

package  {
    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.display.StageAlign;

    public class PositionHandler {

        public function PositionHandler() {
            // constructor code
        }
        public function startPos(obj:MovieClip):void {
            obj.width = stage.stageWidth;
            obj.height = stage.stageHeight;
        }

    }

}
如果我想静态地定位UI组件,但要动态地设置它们的动画,从一个相对位置移动到另一个相对位置,这一切都很好?从一个定制的类不少于?我不知道。。。(更不用说设置阴影/潜在形状变化/颜色擦除等动画)如有任何帮助,将不胜感激


谢谢

Flash实际上不支持开箱即用的“相对”大小和定位。但是没有理由你不能扩展它来给你这种行为

不过这有点像一项事业,因为它基本上可以归结为编写一个布局框架。但是你可以做一些更脏的事情

一个起点可以是扩展Sprite,然后覆盖它的宽度/高度getter/setter。你可以定义自己的逻辑来回应你所认为的“宽度”和“高度”的意思,而不是让flash为你缩放精灵

然后您可以提供“比例宽度”和“比例高度”获取/设置器

functionCalledFrameAfterAnyLayoutValuesChanged()
{
    if ( proportionalWidth is defined )
        widthToLayoutTo = proportionalWidth  * parent.width;
    else
        widthToLayoutTo = width;

    if ( proportionalHeight is defined )
        heightToLayoutTo = proportionalHeight * parent.height;
    else
        heightToLayoutTo = height;

    // Perform whatever logic you need to make your Sprite scaled to widthToLayoutTo / heightToLayoutTo 
    ...
}
类似的事情可以通过“比例Lx”和“比例”来获得相对定位

您可以构建一包扩展此类的组件,覆盖每个类的定制内容

然后,你可以自由选择这些“相对”属性之间的任何方式。我建议使用像GTween这样的库。

1)视频是在专业视频编辑工具中创建的。反正这不是一个银幕演员。第二)在安卓系统上运行的Actionscript中,我认为你永远都不会获得那种平滑度。3)如果您想使用android framework:5.0为您自动绘制阴影,并在视图上使用
.animate()
方法和
ViewAnimationUtils.createCircularReveal
进行循环动画这很有帮助,谢谢!我还发现了一些好的工具。