我有一个使用Adobe AIR设置的套接字服务器,我试图允许两个客户端使用服务器在彼此之间发送消息(这是一个基于Android的项目,因此服务器必须充当PC上的中间人).出于某种原因,我发送的消息只被发送回它来自的同一客户端,而不是发送给另一个客户端.我已经建立了一个系统来识别每条消息的来源,以及如何在另一方面处理它.
变量'connectionNum'int基本上表示客户端是否为数字0或1,并且发送到服务器和从服务器发送的数据在其前面有0或1.
理想情况下,我想要一种方法将数据一次定向到一个特定的客户端,而不是尝试在每个消息的开头用int发送它.
目前,只有连接第二个客户端的消息实际上是通过服务器发送的,第一个发送空白消息,不知道为什么.
这个问题实际上是双重的:
for each循环数组如何for通过其元素的简单循环进行性能比较?
循环中是否保证循环?以下代码表示是:
Run Code Online (Sandbox Code Playgroud)var sample_array:Array = []; for (var i:uint = 0; i < 10000; i++) sample_array.push(i); i = 0; for each(var value:uint in sample_array) { sample_array[i++] = value; } trace('in order was:', check_in_order(sample_array)); function check_in_order(array:Array):Boolean { for (var i:uint = 0, l:uint = array.length; i < l; ++i) { if (array[i] != i) return false; } return true; }
但是我听到其他(高级)工程师发誓说,遍历并不总是按升序进行!这是真的?
我有一个简单的循环,从我的库中的类创建一个movieClip.它将方程的第一部分添加到x属性而不是加号50.但是,它只是添加+50但仅添加到循环中的第一项.我在这做错了什么?
var flagButton:MovieClip;
function displayFlagButtons()
{
for( var i = 0; pages.length > i; i++)
{
flagButton = new roundButton();
// The line below is giving me issues in adding 50 to each movieClip
flagButton.x = (flagButton.width * i) + 50;
// Again, above code adds 50 to 1st item only
addChild(flagButton);
}
}
Run Code Online (Sandbox Code Playgroud) 如何以及何时使用obj.addEventListener(Event.ENTER_FRAME,fun)输入框架事件?我不明白如何在displayobjects或UIcomponents上使用它?
我创建了一个可以使用as3绘图api绘制形状的应用程序.现在我想将这些图形保存到本地磁盘,然后稍后打开该文件以进行进一步编辑.
我怎样才能做到这一点 ??将绘制的对象转换为位图会做到吗?如果我将我的电影剪辑转换为位图,我会失去任何质量或其他东西......?还是有其他方法可以做我想要达到的目标.
此外,我不想将图纸转换为jpegs或任何其他图像格式.
提前致谢 :)
一直在努力想出一个解决方案来返回一个代表两个矩形之间实际交叉点的矩形.
我正在寻找的是这样的: MSDN - Rectangle :: Intersect方法(矩形,矩形)
如图所示,我希望从两个矩形的交叉处返回绿色的矩形.不是某些布尔值true或false.

我将接受代码示例或简单理论作为答案.提前致谢!
我想从MJPG获取URLStream,但是我在发布版本中收到了错误#2048:安全沙箱冲突错误.
我正在做的事情:
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var stream:URLStream = new URLStream();
//receiving this error event in onStreamSecurityError handler:
//Error #2048: Security sandbox violation: {swf} cannot load data from {url}
stream.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onStreamSecurityError);
//load method have no loader context option
stream.load(new URLRequest("http://anydomain.com/mjpg/video.mjpg"));
Run Code Online (Sandbox Code Playgroud)
设置crossdomain.xml不是解决方案,因为应用程序应该能够从任何远程服务器加载流.
我记得flash.display.Loader类,我设置了LoaderContext和应用程序域.之后,flex应用程序可以从任何域加载资源.但我不知道如何处理URLStream.
你有错误#2048的任何解决方案或解决方法吗?
我是Flex的新手,但我正在学习一些教程,试着抓住我正在研究的项目.
我正在使用AS3.
我现在需要将arraycollection(A)添加到填充数据网格的arraycollection(B)中.因此,当用户单击左列上的选项时,生成的arraycollection(A)将添加到右列中当前显示的结果中.
我还需要它来过滤掉任何重复的条目.因此,如果B已经有A中的记录,则不会添加.
我想我可以通过使用additem()函数循环浏览A将每一行添加到B,但是我不确定使用循环的语法是什么,但如果有更好的建议,我肯定会对它开放.
非常感谢您的帮助!
我有一个十六进制数: 0x01F4
我需要一个人的补充 - 应该是FE0B.但我似乎无法得到我需要的东西.
我做:
var n:int = 0xF4;
n = ~n;
trace(n.toString(16));
Run Code Online (Sandbox Code Playgroud)
而-F5不是0B.
谁知道我能做什么?
采用以下AS3/MXML代码:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark" xmlns="*"
backgroundColor="#000000" showStatusBar="false" width="400" height="400"
minWidth="0" minHeight="0">
<s:Rect width="50%" height="50%">
<s:fill>
<s:SolidColor color="#0000FF"/>
</s:fill>
</s:Rect>
</s:WindowedApplication>
Run Code Online (Sandbox Code Playgroud)
这主要是有效的.当我增加或减少程序的大小时,Rect的大小将缩放为WindowedApplication的宽度和高度的50%.但是随着我不断降低窗口的高度,缩小比例会停止几个像素,这个数字很小.这就像我可以让Rect沿着y轴一样小:

在达到这一点之后,即使我不断减小WindowedApplication的大小,也没有任何反应.在我再次开始增加窗口大小之前,Rect保持完全相同的高度.更重要的是,Rect的高度为12像素,这是一个非常随意的数字,它可以停止.
但是,如果我改变:
<s:Rect width="50%" height="50%">
Run Code Online (Sandbox Code Playgroud)
至:
<s:Rect width="{width / 2}" height="{height / 2}">
Run Code Online (Sandbox Code Playgroud)
这个问题神奇地消失了:

WindowedApplication的高度为5,Rect的高度约为"两个半".
为什么会有这样的区别?在前面的例子中,我尝试增加,然后再次减小尺寸几次,甚至缓慢,但它总是卡在同一个地方.谢谢!
actionscript-3 ×10
apache-flex ×4
flash ×4
air ×2
class ×1
client ×1
flex4 ×1
intersection ×1
loops ×1
math ×1
movieclip ×1
mxml ×1
sockets ×1