0

在 AS3 移动应用程序中,我希望有一个从底部向上滑动的按钮或图标菜单。使用 SlideViewTransition,我可以获得我想要的部分内容。

var transition:SlideViewTransition = new SlideViewTransition();
transition.direction = ViewTransitionDirection.UP;
transition.mode = SlideViewTransitionMode.COVER;
view.navigator.pushView(ShareView, null, null, transition);

这行得通,但它并没有做我需要做的两件事。

1)我希望新的过渡只上升到屏幕的 1/2,以便屏幕的顶部显示下面的视图。

2)我希望覆盖的新视图部分透明。通过设置传入视图的 contentGroup 背景 alpha 的 alpha,新视图在进来时是透明的。但是,一旦它覆盖了视图下方的视图,视图就会变得不透明。

this.contentGroup.setStyle('backgroundAlpha', 0.5);

有没有人知道我如何让视图向上滑动 1/2 并保持透明?我不知道从哪里开始,查看皮肤?或子类转换?,或者在 flash 命名空间中使用某些东西而不是 spark 视图。

4

1 回答 1

0

我决定只使用较低级别的 ActionScript 并使用通常应用于 Sprite 的方法自己制作动画是最简单的,但在这种情况下使用 VGroup 以便我可以向其添加火花元素。以下是我写的基类。

public class SlideUpDialog extends VGroup {

private var pctHeight:Number;
private var stopHeight:Number;
private var vertIncrement:Number;

public function SlideUpDialog(pctHeight:Number) {
    super();
    this.pctHeight = pctHeight;
    if (stage) {
        addedToStageHandler();
    } else {
    addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
    }
}
private function addedToStageHandler(event:Event=null) : void {
    removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);         
    graphics.beginFill(0xEEEEEE, 0.8);
    graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight * pctHeight);
    graphics.endFill();
    var bevel:BevelFilter = new BevelFilter(4, -45);
    this.filters = [ bevel ];
    x = 0;
    y = stage.stageHeight;
    stopHeight = y * (1 - pctHeight);
    vertIncrement = y / 2 / 24 / 4;
}
public function open() : void {
    addEventListener(Event.ENTER_FRAME, openFrameHandler);
}
private function openFrameHandler(event:Event) : void {
    if (y > stopHeight) {
        y -= vertIncrement;
    } else {
        removeEventListener(Event.ENTER_FRAME, openFrameHandler);
    }
}
public function close() : void {
          ... the reverse of open
    }
}
于 2013-06-16T05:51:08.013 回答