如何动态设置s:BitmapFill的Source? (Flash Builder,内部代码)

发布于 2024-08-28 08:45:35 字数 1847 浏览 5 评论 0原文

在Flash Builder(flex 4)中,我尝试使用下一个代码将用户(从文件系统)选择的图像设置为重复背景。它与 mx:Image 一起使用,但我想使用 s:BitmapFill 的酷重复功能。

顺便说一句:我使用的技术也不适用于 S:BitmapImage。 FP 也不会返回任何错误。我应该如何处理我的代码才能使其正常工作?

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               xmlns:net="flash.net.*"
               minWidth="955" minHeight="600" >

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.utils.ObjectUtil;

            private function btn_click(evt:MouseEvent):void {
                var arr:Array = [];
                arr.push(new FileFilter("Images", ".gif;*.jpeg;*.jpg;*.png"));
                fileReference.browse(arr);
            }

            private function fileReference_select(evt:Event):void {
                fileReference.load();
            }

            private function fileReference_complete(evt:Event):void {
                img.source = fileReference.data;
                Alert.show(ObjectUtil.toString(fileReference));
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <net:FileReference id="fileReference"
                           select="fileReference_select(event);"
                           complete="fileReference_complete(event);" />
    </fx:Declarations>

<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0">
    <s:fill>
        <s:BitmapFill id="img" source="@Embed('1.jpg')" fillMode="repeat" />
    </s:fill>
</s:Rect>
<mx:Button id="btn"
                       label="Browse and preview..."
                       click="btn_click(event);" />
</s:Application>

In Flash Builder (flex 4) I try to use next code to set selected by user (from file system) Image as a repeated background. It worked with mx:Image but I want to use cool repited capabiletis of s:BitmapFill.

BTW: Technic I use also does not work with S:BitmapImage. Also FP does not return any errors. What Shall I do with my code to make it work?

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx"
               xmlns:net="flash.net.*"
               minWidth="955" minHeight="600" >

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.utils.ObjectUtil;

            private function btn_click(evt:MouseEvent):void {
                var arr:Array = [];
                arr.push(new FileFilter("Images", ".gif;*.jpeg;*.jpg;*.png"));
                fileReference.browse(arr);
            }

            private function fileReference_select(evt:Event):void {
                fileReference.load();
            }

            private function fileReference_complete(evt:Event):void {
                img.source = fileReference.data;
                Alert.show(ObjectUtil.toString(fileReference));
            }
        ]]>
    </fx:Script>

    <fx:Declarations>
        <net:FileReference id="fileReference"
                           select="fileReference_select(event);"
                           complete="fileReference_complete(event);" />
    </fx:Declarations>

<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0">
    <s:fill>
        <s:BitmapFill id="img" source="@Embed('1.jpg')" fillMode="repeat" />
    </s:fill>
</s:Rect>
<mx:Button id="btn"
                       label="Browse and preview..."
                       click="btn_click(event);" />
</s:Application>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沙与沫 2024-09-04 08:45:35

检查这段代码:

        private function fileReference_complete(evt:Event):void {           
            var loader:Loader = new Loader();
            loader.loadBytes(fileReference.data);
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderCompleteHandler);
        }

        private function loaderCompleteHandler(evt:Event):void{
            img.source = evt.target.content;
        }

所以您需要使用加载器来创建位图对象。

Check this code:

        private function fileReference_complete(evt:Event):void {           
            var loader:Loader = new Loader();
            loader.loadBytes(fileReference.data);
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderCompleteHandler);
        }

        private function loaderCompleteHandler(evt:Event):void{
            img.source = evt.target.content;
        }

So you need to use a loader in order to create the bitmap object.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文