两个图像之间的转换

时间:2011-03-16 17:26:54

标签: actionscript-3 blackberry-playbook

我正在为Blackberry Playbook开发一个ActionScript 3.0应用程序。

我正在使用Loader Class来显示图片。

我希望在用户点击此图片时在同一位置显示另一张图片。

我该怎么做?我想在这两个图像之间进行转换。第二张图像将从0 alpha变为100 alpha。

2 个答案:

答案 0 :(得分:1)

您熟悉任何Tween引擎吗?如果你不这样做,我会推荐TweenLite

我通常会做的是加载我计划使用的所有图像,然后将它们中的两个或多个堆叠到我想要的位置。这些图像中只有一个在任何时候都可见(alpha = 1)。

在您的点击处理程序中,您可以执行以下两项操作之一:

  • 将可见图片的alpha补间下移到0,然后在下一张图片的alpha到1之间有一个onComplete处理程序
  • 或者,您可以一次运行两个补间。一个可以将可见图像的alpha减少到0,另一个将下一个图像的alpha补间到1

IROT

答案 1 :(得分:1)

这一切都取决于你想要做的转变。对于最简单的alpha,您可以像推荐的irot一样使用Tweener引擎,或者您可以自己做一些简单的事情。

<强>简单: 基本上,当您单击图像时,请加载下一个图像(或已加载它)。启动一个enterframe监听器来加载它。类似的东西:

// we're assuming that "image2" is the second image and it has an alpha
// of 0.0 and visible of false. "image1" is the first image and currently 
// on stage

// the on click handler for the image
private function _onImageClick( e:MouseEvent ):void
{
    // add a enter frame to the stage - I'm going to assume you
    // have access through this.stage
    this.stage.addEventListener( Event.ENTER_FRAME, this._onEnterFrame );

    // make our second image visible so we can fade it up
    this.image2.visible = true;
}

// called every frame
private function _onEnterFrame( e:Event ):void
{
    // image2 is the second image
    this.image2.alpha += 0.05; // slow fade

    if( this.image2.alpha >= 1.0 )
    {
        this.image2.alpha = 1.0;

        // hide the first image
        this.image1.alpha = 0.0;
        this.image1.visible = false;

        // remove the enter frame event listener
        this.stage.removeEventListener( Event.ENTER_FRAME, this._onEnterFrame );
    }
}

稍微复杂一点:查看BitmapData类及其merge()pixelDisolve()函数:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html