问题标签 [actionscript-3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flash - ActionScript 3.0 套接字无法重新连接
在连接超时后,我无法(通过 Socket 和 XMLSocket 类)连接到 TCP 侦听器。
我有一个需要维护与服务器的 TCP 连接的 flash 小程序。我已经使用计时器、乒乓球系统等实现了超时。但是,有一个问题。在调用 Socket.connect() 时,flash 播放器(9.0.115 和之前的许多其他马厩)通过 SYN 数据包发送 3 个连接请求,中间有一段时间。如果这些都没有得到回复(例如,因为服务器已关闭),我无法让小程序[尝试] 连接到服务器。曾经。也就是说,在小程序的生命周期内。
澄清和/或总结:
对于提供给 Socket.connect() 或 XMLSocket.connect() 的任何主机/端口对,如果调用失败,则在 Flash 小程序的生命周期内对任何其他 Socket(或 XMLSocket)实例的任何后续 connect() 调用都将主机/端口对被忽略。(至少据我所知,使用数据包嗅探器。)
我尝试过调用许多 Socket 方法、销毁和重新创建对象、使用 Socket 池以及我现在不记得的各种其他方法;一切都无济于事。
我目前的解决方案是通过 JavaScript 调用通知父网页并让它重新加载我的小程序。这不是一个很好的解决方案,我也不打算针对它引起的问题实施解决方法,只是因为 Flash 无法正确处理套接字连接。
我一定错过了一些非常简单的东西。
有任何想法吗?
1:我知道你不能真正摧毁物体;我只是删除了对它们的所有引用并希望最好。在这种情况下,我没有尝试显式调用 GC。(尽管我认为我确实尝试将 Socket 放入 Array 并使用delete。)
是的,如果连接成功,它会按预期工作(即使稍后连接断开。)
触发这种情况的唯一事件是服务器根本没有响应的情况;就好像 Flash 将主机/端口组合标记为“离线”,并且在小程序的生命周期内不再向其发送任何数据包。
我怀疑主动拒绝连接(例如主机在线但未监听端口)不会导致这种情况。
我没有从 Socket 收到任何错误消息或任何其他类型的反馈。
当第一个失败时,您是否曾经多次调用 connect() 到同一个主机/端口对?你怎么知道第一个 connect() 失败了?在随后的 connect() 调用之前,你有没有做任何事情来重置套接字?
apache-flex - 如何在 FireFox3 中打印 Flex 组件?
多亏了 FireFox 对 ActiveX 组件的错误实现(打印时它确实应该拍摄它们的图像) Flex 组件(在我们的案例中是图表)不会在 FX 中打印。
它们在 IE7 甚至 IE6 中打印良好。
我们需要这些图表来打印,但它们也有动态内容。我真的不想在用户打印时再次将它们绘制为图像 - Flex 组件应该这样做。
我们找到了一种潜在的解决方法,但不幸的是它在 FireFox3 中不起作用(在 FireFox2 中它有点起作用,但还不够好)。
有人知道解决方法吗?
actionscript-3 - 我怎样才能“不接受”Flex 中的拖累?
一旦我打电话DragManager.acceptDrag
,有什么办法可以“不接受”拖累吗?假设我有一个可以接受拖放的视图,但仅限于某些区域。一旦用户拖动我调用的这些区域之一DragManager.acceptDrag(this)
(从DragEvent.DRAG_OVER
处理程序),但如果用户随后移出该区域,我想将拖动的状态更改为不接受并显示DragManager.NONE
反馈。但是,无论调用DragManager.acceptDrag(null)
还是DragManager.showFeedback(DragManager.NONE)
似乎都没有任何效果。一旦我接受了拖动设置反馈类型,我似乎无法更改它。
明确一点:用户应该能够放置的区域不是组件,甚至不是显示对象,实际上它们只是文本字段文本中的范围(如选择)。如果他们是他们自己的组件,我可以通过让他们每个人单独接受拖动事件来解决它。我想我可以创建漂浮在文本上的代理组件来模拟它,但如果没有必要,我宁愿不这样做。
我现在已经设法让它在 AIR 和浏览器中工作,但只能通过将代理组件放在应该能够放置内容的文本范围的顶部。这样我就得到了正确的反馈,并且在拖动退出时会自动不接受下降。
这是 AIR 中关于 D&D 最奇怪的事情:
在基于浏览器的 Flex 中,offsetX
应该offsetY
是负数(文档如是说,它工作正常)。但是,当在 AIR 中运行完全相同的代码时,您必须使偏移量为正。相同的数字,但为正数。这是非常非常奇怪的。
我已经测试了更多以及@maclema 的工作原理,但如果你在 AIR 中运行则不行。AIR中的拖放似乎有所不同。这真的很奇怪,因为不仅反馈没有正确显示,而且不可能不接受,而且坐标也完全关闭了。我只是在浏览器而不是 AIR 中尝试了我的应用程序,并且拖放完全被破坏了。
此外,跳过dragEnter
处理程序在 AIR 中工作正常,但在浏览器中运行时会破坏一切。
apache-flex - 在 E4X (AS3 - Flex) 中删除/替换节点
我正在应用程序中构建列表/网格控件并在Web 应用程序Flex
中使用它。.NET
长话短说,我从序列化对象的 Web 服务中获取 XML。我有一个页面上可以有多少东西的页面限制。我采用了一个数据网格并将其制成页面,跨页面排序,并处理一些基本过滤。
关于分页,我使用在页面上键入的 Dictionary 并存储该页面的 XML。这样,每当用户返回我保存到此字典中的页面时,我都可以从本地内存中获取 XML,而不是访问 web 服务。基本上,我正在缓存从每次调用 web 服务中检索到的数据以获取一页数据。
有几件事可以使我的缓存过期。过滤和排序是主要原因。但是,用户可以通过打开编辑器来编辑网格中的一行数据。他们编辑的数据可能会导致行中显示的数据过时。我可以轻松地访问 Web 服务并获取整个数据页面,但由于页面大小是在运行时设置的,因此我可能会查看大量要检索的记录。
因此,现在让我谈谈我遇到的问题的核心。为了防止取回整个数据页面,我调用了 web 服务,请求完全更新的记录(编辑器处理保存其数据)。
由于我使用的是自定义对象,因此我需要在服务器上将它们序列化为 XML(这已经为我们软件的其他部分处理了)。所有数据都通过 e4x 中的 XML 处理。Dictionary 中的缓存存储为 XMLList。
现在让我向您展示我的代码...
基本上,我得到了要替换的节点的 id。然后我在缓存的 Data 属性 ( XMLList
) 中找到它。我确保它存在,因为第二行的过滤器返回XMLList
.
我遇到的问题是删除行。我无法使该行从列表中删除该节点。删除行之后的行有效。我已将节点添加到列表中。
如何替换或删除该节点(即我从缓存的 .Data 属性中的过滤语句中找到的节点)???
希望我所有变量的下划线在发布时都不会被转义!否则this._ == this
._
apache-flex - 如何重新设置 Adobe Flex Accordion 的样式以在每个画布标题中包含一个按钮?
这是我的手风琴的示例代码:
我想在每个标题中包含一个按钮,如下所示:
apache-flex - Flex:是否存在无痛的编程数据绑定?
到目前为止,我只做了一点 Flex 开发,但我更喜欢以编程方式创建控件而不是 mxml 文件的方法,因为(如果我错了,请纠正我!)我已经收集到你可以'不能兼得——也就是说,在单独的 ActionScript 类文件中具有类功能,但在 mxml 中声明包含的元素。
在生产力方面似乎没有太大差异,但以编程方式进行数据绑定似乎并不简单。我看了一下 mxml 编译器如何转换数据绑定表达式。结果是一堆生成的回调和比 mxml 表示中更多的行。那么问题来了:有没有一种方法可以以编程方式进行数据绑定,而不会造成伤害?
apache-flex - 如何使用 Flash (AS3) 从远程域调用 Flex SWF?
我有一个托管在http://www.a.com/a.swf的 Flex swf 。我在另一个尝试加载 SWF 的域上有一个 flash 代码:
在 onLoaderFinish 事件中,我尝试从远程 SWF 加载类并创建它们:
当此代码运行时,我得到以下异常
有什么办法可以让这段代码工作吗?
xml - AS3 XML 解析的最佳实践
我在解析 Flash 中的各种类型的 XML(特别是 FeedBurner RSS 文件和 YouTube 数据 API 响应)时遇到了一些麻烦。我正在使用 aURLLoader
来加载 XML 文件,并在Event.COMPLETE
创建新的 XML 对象时。75% 的时间都可以正常工作,而且我时不时地遇到这种类型的异常:
我们认为问题在于 XML 很大,并且可能在Event.COMPLETE
XML 实际从URLLoader
. 我们想出的唯一解决方案是在事件上设置一个计时器,并在开始解析数据之前基本上“等待几秒钟”。当然,这不是最好的方法。
有什么可靠的方法可以在 Flash 中解析 XML?
2008 年 9 月 2 日更新我们得出以下结论,此时代码中的 excption 被触发:
我已经在这部分周围放置了一个 try/catch 语句,并且当它发生时当前正在屏幕上显示一条错误消息。我的问题是,如果bytesLoaded == bytesTotal
?
我已经用状态报告更新了原始问题;我想另一个问题可能是有没有办法XML
在访问数据之前确定对象是否被正确解析(如果错误是我的循环计算对象数量在 XML 实际解析为对象之前开始) ?
@Theo:感谢ignoreWhitespace 提示。此外,我们已经确定事件在它准备好之前被调用(我们做了一些测试跟踪mainXMLLoader.bytesLoaded + "/" + mainXMLLoader.bytesLoaded
apache-flex - 如何让组合框的标签淡入 Flex
我有一个组合框,它位于 Flex 3 的面板内。基本上我想使用 ActionScript 中的淡入淡出效果来淡化面板。我可以让淡入淡出正常工作,但是组合框的标签不会褪色。我对按钮也有同样的问题,发现需要嵌入它们的字体。没问题。我嵌入了我正在使用的字体,并且按钮的标签正确褪色。我对组合框尝试了类似的方法,但它不会淡化选定的项目标签。
这是我到目前为止所做的:在脚本中的 MXML 顶部嵌入字体代码:
在我的初始化函数中
组合框的 mxml:
以及我为将字体应用于组合框而编写的一种样式:
我必须编写样式而不是将其放在“FontFamily”属性中的原因是该样式使组合框中的所有文本都成为正确的字体,而“FontFamily”属性仅使下拉菜单中的项目使用正确的字体。
actionscript-3 - 命名 AS3 类的规则是什么?
我正在尝试为代码生成器(在 C# 中)编写 RegEx 以确定 AS3 类的正确类或包名称。
我知道类名
- 必须以字母开头(大写或其他)
- 任何其他数字都可以是字母数字
- 不能有空格
还有别的事吗?