Famo.us RenderController无法在SequentialLayout下工作?

时间:2015-01-15 13:26:22

标签: layout render transition famo.us

我已将一个公共Surface和一个Scrollview(实际上是一个FlexScrollView)添加到SequentialLayout,然后将布局添加到我的View中,如下面的代码所示:

function _createCameraView() {
    var layoutViews = [];

    this.cameraView = new View({
        size: [undefined, this.options.footerSize]

    });

    var layout = new SequentialLayout({
        size: [undefined, this.options.footerSize],
        direction: Utility.Direction.Y
    });

    var backgroundSurface = new Surface({
        size: [undefined, 120],
        content: 'some content',
        classes : ['photo-guide-content'],
        properties: {
            backgroundColor: 'transparent',
            zIndex: 4
        }
    });

    // detail list
    var detailsList = new FlexScrollView({
        layout: ListLayout,
        direction: Utility.Direction.X, // set direction to horizontal
        paginated: true,
        //autoPipeEvents: true,
        useContainer: true,
        container : {
            size: [undefined, 60],
            properties : {
                'z-index' : 5,
            }
        }
    });

    layoutViews.push(backgroundSurface);
    layoutViews.push(detailsList);

    layout.sequenceFrom(layoutViews);

    this.cameraView.add(alignModifier).add(layout);
}

然后我在另一个视图上添加了一个RenderController,我用它来显示我的cameraView:

function _selectCamera() {
    if (!this.cameraView) {
        _createCameraView.call(this);
    }
    this.footerRender.hide(this.mapView);
    this.footerRender.show(this.cameraView);
}

我知道我不需要从上面函数的渲染中调用hide方法,只需要show方法,它应该用平滑的不透明度转换交换视图,默认情况下定义它。虽然使用此顺序布局时我没有得到这种效果。我知道它与这个布局有关,因为我已经尝试将布局切换到FlexibleLayout和GridLayout,并且它可以正常使用这两个。所以,我的问题是,为什么不使用SequentialLayout?我还注意到它有一个名为setOutputFunction(outputFunction)的方法,有没有办法使用它,所以布局使用从RenderController返回的不透明度或者如何以其他方式修复?

1 个答案:

答案 0 :(得分:0)

尝试在视图中添加getSize方法。

这样的事情:

this.cameraView.getSize = function() {
    return [undefined, undefined];
};