Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Actionscript 3 Flex 4:无法在Flex中使用gif动画_Actionscript 3_Flash_Apache Flex - Fatal编程技术网

Actionscript 3 Flex 4:无法在Flex中使用gif动画

Actionscript 3 Flex 4:无法在Flex中使用gif动画,actionscript-3,flash,apache-flex,Actionscript 3,Flash,Apache Flex,我对Flex非常陌生,现在正在学习如何在工作项目中使用gif动画。下面的示例是一个非常简单的flash播放器,用于测试。我需要做的就是在播放器播放时显示spinner.gif正在运行。如果没有旋转器,播放器可以正常工作,但是当我添加show_旋转器函数和线条时,屏幕上什么也看不到 brouser窗口是空白的。我在网上搜索,但还没有找到答案。我认为我不完全理解flash player显示组件的方式。。如果您有任何建议,我将不胜感激 Spinner.mxml文件: 有一件事你可以试试: 在项目上单

我对Flex非常陌生,现在正在学习如何在工作项目中使用gif动画。下面的示例是一个非常简单的flash播放器,用于测试。我需要做的就是在播放器播放时显示spinner.gif正在运行。如果没有旋转器,播放器可以正常工作,但是当我添加show_旋转器函数和线条时,屏幕上什么也看不到

brouser窗口是空白的。我在网上搜索,但还没有找到答案。我认为我不完全理解flash player显示组件的方式。。如果您有任何建议,我将不胜感激

Spinner.mxml文件:


有一件事你可以试试:

在项目上单击鼠标右键,然后单击“属性” 单击Flex编译器 确保选中“将非嵌入文件复制到输出文件夹” 这将使图像被复制到项目中的输出文件夹中。编译后,您可以实际打开该文件夹,并查看该文件是否存在。如果不在那里,尝试手动复制那里的文件,看看它是否有效。或者你可以尝试一个普通的图像,看看它是否在那个位置工作


祝你好运。

如果你只是在MXML标记中设置visible=true,而不调用show_spinner,你会看到微调器吗?谢谢,我刚刚尝试了这个,答案是否定的,屏幕是空白的,没有播放器,也没有微调器。spinner.gif在你的项目中的什么位置?spinner.gif在src文件夹中,以及Spinner.mxml和animatedgimage.as文件。谢谢,但这没有帮助。gif文件确实在输出文件夹中。我复制了您的代码,并在本地进行了尝试,gif显示良好。我在使用FlexSDK 4.6时遇到了堆栈跟踪。您可以将s:Group更改为mx:Canvas以修复此问题。使用Flex SDK 4.13,视频部分没有显示,但gif仍然显示,没有堆栈痕迹。我唯一没有的就是你的spinner.gif。我使用了GIFPlayer附带的diego.gif。我只是将org文件夹复制到我的project src文件夹中,就包含了GIFPlayer代码。这是个好消息,谢谢,我也会尝试:我使用的是Flex SDK 4.6,也会尝试diego.gif文件。我想,当我使用firefox浏览器时,gif文件确实可以工作,但在Chrome浏览器中却不能。。我也在使用Ubuntu 12.04。你知道如何在Chrome上工作吗?谢谢:我在Chrome上试用过,通过启用Pepper Flash播放器,我可以复制它。深入研究一下代码,当调用urlLoader.load时,它在GIFPlayer中似乎失败了。由于没有Pepper Flash的调试版本,所以不确定它到底在失败什么。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                xmlns:local="*"
                xmlns:s="spark.components.*" layout="vertical" verticalAlign="top"
                backgroundColor="white"
                viewSourceURL="srcview/index.html"
                creationComplete="initApp()">
    <mx:Script>
        <![CDATA[
        import mx.events.VideoEvent;

        private function videoDisplay_ready():void {
            videoDisplay.visible = true;
            controlBar.visible = true;
        }

        private function show_spinner(evt:mx.events.VideoEvent):void {
            if (evt.state == "playing") {
                spinner.setVisible(true);
            } else {
                spinner.setVisible(false);
            }
        }

        private function initApp(){
            videoDisplay.addChild(spinner);
        }
        ]]>
    </mx:Script>
    <s:Group>
        <mx:VideoDisplay id="videoDisplay" visible="false" width="{200}" height="{200}"
                         ready="videoDisplay_ready()"
                         source="http://www.derekentringer.com/flv/purple_plasma.flv"
                         stateChange="show_spinner(event)">
        </mx:VideoDisplay>

        <mx:ControlBar id="controlBar" visible="false">
            <mx:Button id="play" name="play" label="Play" click="videoDisplay.play()"></mx:Button>
            <mx:Button id="pause" name="pause" label="Pause" click="videoDisplay.pause()"></mx:Button>
        </mx:ControlBar>

        <local:AnimatedGIFImage id="spinner" source="spinner.gif" visible="false" verticalCenter="0" horizontalCenter="0"/>

    </s:Group>
</mx:Application>
package
{
import flash.net.URLRequest;

import mx.controls.Image;
import mx.core.UIComponent;

import org.bytearray.gif.player.GIFPlayer;

public class AnimatedGIFImage extends Image
{
    private var _gifImage  : UIComponent;

    public function AnimatedGIFImage()
    {
        super();
        this._gifImage  = new UIComponent();
    }

    override public function set source(value : Object) : void
    {
        if (!value is String)
        {
            throw new ArgumentError("Source must be of type String");
        }

        super.source = value;
    }

    override protected function createChildren() : void
    {
        super.createChildren();
        var player : GIFPlayer = new GIFPlayer();
        player.load(new URLRequest(this.source as String));
        this._gifImage.addChild(player);
    }

    override protected function updateDisplayList(unscaledWidth : Number, unscaledHeight : Number) : void
    {
        this.addChild(this._gifImage);
        super.updateDisplayList(unscaledWidth, unscaledHeight);
    }
}
}