标签: flex3

Flash:带参考表的AMF3?

AMF3规范定义了所谓的"参考表"的使用(参见本规范的第2.2节).

我在我在Erlang中开发的AMF3编码器/解码器中实现了这种行为,但对Flash API不是很有经验,我很难找到在将对象序列化为AMF3时如何轻松强制Flash使用这些引用表; 例如,如果我使用ByteArray,它似乎只是重复完整的对象编码

 var ba:ByteArray = new ByteArray();
 ba.writeObject("some string1");
 ba.writeObject("some string1");
 # =>
 # <<6,25,115,111,109,101,32,115,116,114,105,110,103,49,
 #   6,25,115,111,109,101,32,115,116,114,105,110,103,49>>
Run Code Online (Sandbox Code Playgroud)

(这显然是重复).

但是,如果这两个字符串在一个writeObject调用中,它似乎确实使用引用:

 ba.writeObject(["some string1", "some string1"]);
 # => <<9,5,1,6,25,115,111,109,101,32,115,116,114,105,110,103,49,6,0>>
Run Code Online (Sandbox Code Playgroud)

套接字似乎表现得一样.

那么,我可以在Flash代码中使用引用表吗?(假设我在Flash应用程序和服务器之间可能有非标准协议)

谢谢!

apache-flex flash erlang amf flex3

5
推荐指数
1
解决办法
1215
查看次数

在as3中添加自定义事件侦听器

我已经通过论坛帖子和教程进行了大量阅读,但我仍然无法将我的大脑包围在事件和事件监听器中.我有一个非常简单的例子,但我无法让它工作.

我在转发器中有一个自定义对象的arrayCollection,当单击其中一个对象时,我想要一个不同的组件来显示与该对象关联的数据.

这就是我所拥有的,但是监听器从不响应(调度程序似乎正在工作,因为新事件已创建,我可以看到具有正确输出的跟踪.)我怀疑这是因为当我调用addEvent Listener时,我是在错误的对象上这样做.我的理解是,显示对象数据的对象是应该具有事件监听器的对象,并且监听这种性质的所有事件,但也许我误解了.

我的自定义事件:

public class SelectObjectEvent extends Event
    {
        public function SelectObjectEvent(customEventString:String, myObject:customObject)
        {
              super(customEventString, true, false);
              trace(customEventString+" "+myObject);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的自定义对象具有以下函数,该函数在单击时调用:

public function selectObject(myObject:customObject):void
        {
            dispatchEvent(new SelectObjectEvent("OBJECT_SELECTED", customObject));              
        }
Run Code Online (Sandbox Code Playgroud)

我想要显示所选对象的组件具有以下构造函数:

public function SelectedObjectDisplayClass()
        {
            addEventListener("OBJECT_SELECTED", this.showObject)
        }

        public function showObject(event:Event):void
            {  
            trace("Show object: "+event); 
        } 
Run Code Online (Sandbox Code Playgroud)

events flex3 actionscript-3

5
推荐指数
1
解决办法
2863
查看次数

如何在ActionScript中使用数组调用varargs函数?

我需要调用一个varargs函数:

function doSomething(... args): Object {
    // do something with each arg
}
Run Code Online (Sandbox Code Playgroud)

但是,我正在为此动态构建参数:

var someArgs: Array = ['a', 'b', 'c'];
doSomething(someArgs);
Run Code Online (Sandbox Code Playgroud)

问题是,当我以这种方式调用函数时,args最终会成为具有someArgs第一个元素的1元素数组,而不是三元素数组.

我怎么能说doSomethingsomeArgs作为参数数组?

(对于搜索引擎,这是参数解包)

apache-flex flex3 actionscript-3

5
推荐指数
1
解决办法
1493
查看次数

为什么在Actionscript中不支持重载?

Action脚本是基于面向对象编程开发的,但为什么它不支持函数重载?

Flex支持重载吗?

如果是,请简要说明一个真实的例子.

actionscript flex3 actionscript-3

5
推荐指数
2
解决办法
8018
查看次数

如何在运行时强制Flex图表重绘

我有一个柱形图,它使用标签函数来格式化垂直轴.我添加了一个按钮,希望在单击按钮时重绘轴(或图表).现在,图表轴仅在最初添加到视图状态时才会呈现OK.

我有一个函数,在最初创建图表后设置各种属性.在那里,我尝试了所有这些:

myChart.verticalAxis.dataChanged();
myChart.validateNow();
myChart.validateDisplayList();
myChart.validateProperties();
myChart.invalidateDisplayList();
myChart.invalidateProperties();

但它们不会改变轴格式.我怎样才能做到这一点?

轴的MXML代码是:

< mx:LinearAxis id="verticalAxis" labelFunction="vAxisFormat"/>

标签功能是:

    private function vAxisFormat(labelValue:Number, previousValue:Object, axis:IAxis):String {
        axis.getLabelEstimate();
        if (_scale == 1){
            return currencyFormatter.format(labelValue/_scale); 
        }else {
            return numberFormatter.format(labelValue/_scale);
        }   
    }
Run Code Online (Sandbox Code Playgroud)

apache-flex flex3

5
推荐指数
1
解决办法
1065
查看次数

5
推荐指数
1
解决办法
8148
查看次数

Adobe AIR应用程序在空闲时间后响应缓慢

我花了数百个我们用Flex 4.0开发Adobe AIR应用程序,现在我认为我应该已经完成​​了,但是在让应用程序运行超过几个小时后,UI响应开始缺乏...

我的工作:我的应用程序使用自定义的色度,通过将窗体模块中的BorderContainer设置为透明度.我打开了许多不同的弹出窗口,它们都基于Window-Class(不是TitleWindow!),并在ActionScript中动态创建和关闭.通过使用Flex Profiler,我当然知道,垃圾收集器会正确销毁所有已分配的资源,并且内存消耗不随应用程序正常运行时间而增加.此外,分析器向我显示,我的方法都没有占用大量的cpu时间,所以这也应该没问题.

真正有趣的是:如果我不断地与应用程序交互(单击按钮,写文本,......)没有任何反应,一切都很好,但如果我不与应用程序交互几分钟然后回来 - UI-响应能力真差!

真的很差意味着,如果我在TextInput-Control中输入一些文字,我可以看到每一封写的信都延迟至少1秒!

有没有人经历过类似的情况,或者有人知道,问题可能是什么?我的建议是,在一些活动之后,flash-player-runtime限制了AIR应用程序的cpu使用,并且在用户返回时不会返回全部功率.

我使用Flex 4.0,Flex 4.1,AIR 1.5,带有Flash Player 9的AIR 2.0以及在Windows XP和Windows 7上运行的Flash Player 10测试了该应用程序...

apache-flex air flex3

5
推荐指数
1
解决办法
1450
查看次数

as3:如何按值复制对象

我需要在每个其他对象中都有一个共同对象的实例.我正在对每个子对象中的对象值进行修改.

例如.我有一张瓷砖地图,一个机器人按特定顺序移动它们.每个机器人都标记着已经被他访问过的瓷砖,因为访问=真.但总的来说我不希望改变主地图......

我试图建立一个例子:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
    applicationComplete="complete()">
    <mx:Script>
        <![CDATA[
            private var array:Array = new Array( 1, 2, 3, 4);
            public function complete():void
            {
                trace("here " + array);
                var a:Array = array;
                a[0] = 100;
                trace("here " + array);
            }
        ]]>
    </mx:Script>
</mx:Application>
Run Code Online (Sandbox Code Playgroud)

有人可以帮我理解如何通过值(不是通过引用)复制数组,例如数组

flex3 actionscript-3

5
推荐指数
3
解决办法
6083
查看次数

用于将字节转换为kb,mb,gb等的ActionScript代码

我有一个实用程序函数,将以适当的形式显示文件大小,如Windows资源管理器,即; 将它转换为最接近的KB,MB,GB等.我想知道我写的代码是否正确,以及它是否可以变得更简单.

我写的功能如下:

public static function formatFileSize(bytes:int):String
    {
        if(bytes < 1024)
            return bytes + " bytes";
        else
        {
            bytes /= 1024;
            if(bytes < 1024)
                return bytes + " Kb";
            else
            {
                bytes /= 1024;
                if(bytes < 1024)
                    return bytes + " Mb";
                else
                {
                    bytes /= 1024;
                    if(bytes < 1024)
                        return bytes + " Gb";
                }
            }
        }
        return String(bytes);
    }
Run Code Online (Sandbox Code Playgroud)

虽然它目前对我有用,但我觉得它可以用更简单的方式编写,甚至可以优化.

提前致谢

apache-flex actionscript flex3 actionscript-3

5
推荐指数
1
解决办法
3014
查看次数

在Actionscript中,音频录制文件已损坏

我使用Adobe Flash Builder 4.6/AIR从麦克风录制了语音样本,成功录制了语音.我首先在actionscript中将语音数据(字节数组)转换为base64格式,然后使用我的PHP代码将该base64数据转换为WAV文件.但是在RiffPad中WAV文件抛出文件已损坏.

RIFFPad是RIFF格式文件的查看器,如WAV,AVI.

预期的wav文件规范:

采样率:22KHZ

    // -- saves the current audio data as a .wav file
    protected function onSubmit( event:Event ):void {
        alertBox.show("Processing ... please wait.");

        stopPlayback();
        stopRecording();
        playBtn.enabled = recordBtn.enabled = submitBtn.enabled = false;
        var position:int = capture.buffer.position;
        var wavWriter:WAVWriter = new WAVWriter()
        var wavWriter1:WaveEncoder = new WaveEncoder()
        wavWriter.numOfChannels = 1;
        wavWriter.samplingRate = 22050;
        wavWriter.sampleBitRate = 16; 
        var wavBytes:ByteArray = new ByteArray;
        capture.buffer.position = 0;
        wavWriter.processSamples(wavBytes, capture.buffer, capture.microphone.rate * 1000, 1);
        Settings.alertBox3.show("RATE :"+capture.microphone.rate); //Here show RATE: …
Run Code Online (Sandbox Code Playgroud)

php apache-flex wav flex3 actionscript-3

5
推荐指数
1
解决办法
214
查看次数

标签 统计

flex3 ×10

apache-flex ×7

actionscript-3 ×6

actionscript ×2

flash ×2

air ×1

amf ×1

erlang ×1

events ×1

php ×1

wav ×1