Titanium ImageView动画的宽度和高度

时间:2013-02-05 13:56:22

标签: ios animation imageview titanium

我尝试在Titanium中创建一个ImageView,如下所示:

var animationView = Titanium.UI.createImageView
(
    {
        images:animationImages,
        duration:50,
        repeatCount:0,
        width: '90dp',
        height: '270dp'
    }
);

在Android上它按预期获得它的大小,但在IOS上,它根本没有缩放。有什么东西,我做错了吗?或者我应该通过手动创建ImageViews然后用setInterval更改它们来逐帧进行?

2 个答案:

答案 0 :(得分:2)

这实际上不是一个一致的解决方案,它应该是一个评论,但由于我没有足够的代表,我必须把它作为答案。

对于初学者,我会尝试给它一个顶部和左侧属性。 其次,从远程URL检索的图像是?远程URL仅在Android中受支持。如果是这种情况,您可以按照问题中的说法进行解决。

最后,'dp'仅适用于Android,因此它在iOS中根本无法扩展,它只会删除'dp'并将数字用作“点”,在非视网膜屏幕上它将是相同数量的像素和视网膜显示器上它将是双倍的。

答案 1 :(得分:1)

我最终决定创建自己的动画类,如下所示:

function Animation(data)
{
    var width = data.hasOwnProperty("width") ? data.width : Ti.UI.SIZE;
    var height = data.hasOwnProperty("height") ? data.height: Ti.UI.SIZE;
    var duration = data.hasOwnProperty("duration") ? data.duration : 50;
    var imageFiles = data.hasOwnProperty("images") ? data.images : [];

    var images = [];

    var container = Ti.UI.createView
    (
        {
            width:width,
            height: height
        }
    );

    for(var i=0; i<imageFiles.length; i++)
    {
        var image = Ti.UI.createImageView
        (
            {
                image:imageFiles[i],
                width:width,
                height:height
            }
        );

        if(i!=0)
            image.setVisible(false);

        container.add(image);
        images.push(image);
    }

    container.activeImage = 0;
    container.intervalId = null;

    container.setActiveImage = function(index)
    {
        if(container.intervalId == null)
            container.activeImage = index;
    }

    container.start = function()
    {
        var callback = function()
        {
            for(var i=0; i<images.length; i++)
            {
                if(i == container.activeImage)
                    images[i].setVisible(true);
                else
                    images[i].setVisible(false);
            }

            container.activeImage = (container.activeImage + 1) % images.length;
        }

        container.intervalId = setInterval ( callback, duration );
    }

    container.stop = function()
    {
        clearInterval(container.intervalId);
        container.intervalId = null;
    }

    return container;
}

module.exports = Animation;

你可以像这样使用它:

var Animation = require('...path to your animation file');
var myAnimation = new Animation
(
    {
        width:'100dp',
        height:'100dp',
        duration:50, //duration while one frame is showing
        images:['one.png', 'two.png'...], //full paths
    }
);

//start:
myAnimation.start();

//stop
myAnimation.stop();