天道酬勤,学无止境

Create Linked List in AS3

how can I create a linked list in actionScript 3.0? I have a project that I should get some integer numbers from the user and sort them by a tree algorithm for example heap-sort and show the tree in flash, I think I should use linked list to sort the data by tree algorithms. so anybody know how can I create a linked list which I can insert nodes, delete nodes and pass over the nodes, just like C++ linked list. Thanks. SA

评论

You can use or take as an exmaple as3Commons linked list implementation. They provide very beautiful implementation with very good abstraction layer.

If you have access to the mx package, you could use mx.utils.LinkedList.

To construct the LinkedList you could repeatedly push or unshift items onto it.

var input:Array = getInput();
var myList:LinkedList = new LinkedList();
for each (var o:Object in input) {
    myList.push(o);
}

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Listen for incoming connections in AS3 (AIR) Client whithout using Server Socket
    I managed to create a C# Server that sends files to AS3(AIR) Clients using sockets. On the AS3 side I'm using the flash.net.Socket library to receive the data through TCP. This is how it works: -> I turn on my server, and it listens for clients (plus I can create a list of connected devices); -> I turn on my client and it automatically receives the data; The trigger event to receive the data is made on the client, i.e., I simply turn the server ON and when the client turns ON, it gets the data, triggering these events: socket.addEventListener(Event.CONNECT, onConnect); -> to connect to the
  • 扩展AS3的数组访问运算符以“包装”越界索引值(extending AS3's Array access operators to 'wrap' out-of-bound index values)
    问题 我真的很想能够使Flash的数组访问语法在数组范围内“包装”。 冗长的解释- var array:Array = ['a','b','c','d','e','f']; 为简单起见,第一个索引为0,其值为第一个字母“ a”。 为了获得该价值,我们会这样做- array[0]; // returns 'a' 只要您用于访问数组的索引在0和array.length之间(在我们的示例中为6)之间,一切都可以正常工作-但是,如果您在这些范围之外使用索引,则会被关闭。 array[-3]; array[9]; // both return 'undefined' 有时这是一件好事-有时您希望做到这一点,并且对此感到满意。 在其他时候,您发现自己希望(或者至少我希望自己)希望它表现得更像这样- array[-3]; array[9]; // both return 'd' (例如,当您在最后一张照片上单击“下一页”时,其照片库会跳回到开头) 我一遍又一遍地用一小段代码来处理这种事情,但是总是在将索引传递到数组之前先对其进行更改: var index = -3; while(index < 0){index += array.length} array[index % array.length]; // returns 'd' ...很好,但是我真正想做的是扩展Array对象本身
  • How do I list (a potentially large amount of) classes in a specific package? (AS3)
    I have x amount of classes in a package eg. "com.trevorboyle.lotsofclasses" and I keep adding more (These classes will probably all be static and will probably all extend the same class). I wish to create a drop-down list of all these classes, preferably without having to manually create an array myself. Once a class is selected from the list, I'll be able to use getDefinitionByName to return it, because I will know it's name at this point. The question is, as I believe there is no support in AS3 to list all the classes in a specific package, is there a design pattern that handles this?
  • Dynamic stageWidth and Height in Flash AS3
    This seems like it would be a really easy thing to do, but its been giving me all kinds of headaches. I have a movieclip that is a gallery, It's linked to be called from AS when a button is clicked. When an image in the gallery is clicked, It fades in using the Tween class and is supposed to be centered in the main stage, but its centering to the movieClip instead. Here is the code: //Centers and places image right ondo the display board function fullLoaded(e:Event):void { var myFull:Loader = Loader(e.target.loader); addChild(myFull); //positioning myFull.x = (stage.stageWidth - myFull.width)
  • AS3-浏览数组元素(AS3 - Navigating through array elements)
    问题 您好,谢谢您的宝贵时间。 我有一个as3代码,它从7个随机选择5个帧,没有重复。 var mygroup1:RadioButtonGroup = new RadioButtonGroup("group1"); q1a1.group = q1a2.group = q1a3.group = q1a4.group = q1a5.group = mygroup1; var number_array:Array = [8158,8159,8160,8161,8162,8163,8164]; var final_array:Array = []; var count_selected:int = 5; var i:int; for(i = 0; i < count_selected; i++) { if(number_array.length == 0) break; else final_array.push(number_array.splice(Math.floor(Math.random() * number_array.length), 1)[0]); } var index = 0; var currentQuestion:int = final_array[index]; var answers:Object = { 8158: 'B) 12', 8159: 'F) All
  • 将过滤器应用于 AS3 中的所有内容(Apply Filter to Everything in AS3)
    问题 我正在尝试在 AS3/Flex SDK 中添加过滤器。 我可以为任何单个对象添加一个过滤器,但我想将过滤器应用于某个对象的所有子对象。 想想一个暂停窗口弹出,暂停窗口下方的所有内容都变得模糊。 将过滤器应用于每个单独的对象(例如:遍历列表)不起作用,因为来自每个对象的过滤器可能会重叠并且看起来非常难看。 有谁知道如何去做? 有没有办法将过滤器应用于所有内容? 这是代码的简化版本: myCanvas.graphics.beginFill(0x00FF00,0.5); myCanvas.graphics.drawRect(0,0,100,100); myCanvas.addChild(new vectorImage()); myCanvas.addChild(new vectorImage2()); var blur:BlurFilter = new BlurFilter(); myCanvas.filters = [blur]; 直接绘制的图形和子项都不会应用模糊效果。 我尝试更改默认值并尝试其他过滤器: var colors:Array = [0xEDEDED, 0xCCCCCC, 0x211b28, 0x211b28, 0x211b28]; var alphas:Array = [0, 1, .35, .5, 1]; var ratios:Array = [0, 50
  • Flash AS3 EventDispatcher - 获取已注册侦听器列表的任何方式?(Flash AS3 EventDispatcher - any way of getting a list of registered listeners?)
    问题 有没有办法获取EventDispatcher的注册侦听器列表? 我知道EventDispatcher有hasEventListener方法来告诉您是否注册了任何侦听器,但是是否有一种简单的方法可以询问EventDispatcher以找出侦听器是什么? 我想这样做的一种方法是将EventDispatcher子类化以覆盖addEventListener方法并将侦听器存储在字典中,但这对我来说感觉很笨拙。 有任何想法吗? 回答1 好吧,除了我最初的想法是将侦听器存储在字典中并明确删除它们之外,似乎没有答案可以解决这个问题。 那好吧... 关于复杂的 AS3 Events 系统的一些有趣想法可以在这里找到。 回答2 看起来这不是一个完整的解决方案,但它可能对您有所帮助: http://www.rialvalue.com/blog/2009/09/08/does-an-eventdispatcher-have-subscribed-listeners/ 从文章: 上面的示例展示了我们如何获得对 EventDispatcher 中声明的不同侦听器的引用,以及如何在没有直接引用(并且知道事件名称 arggg)的情况下删除它们。 尽管这可以帮助您确定 EventDispatcher 是否有侦听器,但您仍然可能会发现几个问题: * You don't have any information
  • 如何在AS3中完全删除动画片段(How to completely remove a movieclip in AS3)
    问题 我希望使用所有的计时器,事件等来删除mc。是否有一种简单的方法来执行此操作? 回答1 当然...取消注册其计时器和事件,将其从其父级中删除,并删除对其的所有引用。 ;) 也就是说,AS3是一种垃圾回收语言,因此您无法控制何时从内存中真正删除对象(包括MC)。 当您删除所有对它的引用(包括事件注册)时,GC将检测到不再需要它并为您清除它。 您可以(并且应该)做的一件事情是,每当您注册事件时,都将useWeakReference参数设置为true 。 那是: myMC.addEventListener( Event.ENTER_FRAME, onFrame, false, 0, true ); 这告诉AS3,该特定事件侦听器不应算作参考-因此,如果删除对MC的所有其他引用,即使不取消注册该侦听器也将收集垃圾。 (至于计时器,如果您使用的是setTimeout或setInterval,据我所知,它们也不被视为引用。但是我不确定。) 因此,总而言之,没有办法嘲笑您的MC并让Flash清理所有内容。 这就是AS3的工作方式-管理您的引用和事件是认真编码的一部分。 如果您的MC没有更多的计时器或事件,将从其父级中删除,并且您的代码的任何部分均未引用该MC,则该MC消失了。 回答2 Loader.unloadAndStop() 引用自http://www.gskinner.com/blog
  • 找出半径和角度的点(Find the point with radius and angle)
    问题 我不是几何学上的天才,我想在as3找到一个具有radius和angle的点,但是我不记得这个规则,我知道这应该很简单! 这是一个例子: 替代文字http://img297.imageshack.us/img297/4879/examplepr.png 回答1 as3.x = centerX + radius * cos(angle) as3.y = centerY + radius * sin(angle) 请注意,链接到的图片中的旋转方向是“负向”。 即,角度的增加产生逆时针旋转。 回答2 设x0,y0为所考虑的圆的中心,t为与x轴(右水平)逆时针的角度theta。 然后您要寻找的是 x = x0 + r*cos(t) y = y0 + r*sin(t) 回答3 您必须先将计算器调整为度数模式,然后再进行更多的计算,才能使用度数中的角度
  • AS3嵌入图像类,然后将这些图像放入另一个类中?(AS3 Embed images class and then get these images into another class?)
    问题 例如,现在我有一个名为“ Balls.as”的类。 在这里,我加载了10个不同的球形图像。 你知道,像这样: [Embed(source = "/ball1.png")] [Embed(source = "/ball2.png")] 问题是,如果我生成5个球,这些球图像将被嵌入5 * 5次,对吗? 如我错了请纠正我! 所以我虽然不能参加ballimageloading课程? 一次加载这些图像,然后加载到Balls.as中,因为我现在可以加载所需的任何球? 回答1 最佳实践是拥有一个Assets类,其中将包含静态嵌入的图像,如下所示: [Embed(source="ball1.png")] public static var BallImage1:Class; 然后,您要做的就是为已加载的Bitmap声明一个变量并使用它,如下所示: protected var mBall1:Bitmap = new Assets.BallImage1() as Bitmap; 这将创建已加载图像的Bitmap实例,然后可以将其添加到显示列表中。 每个图像只会加载一次,并且您可以触手可及的所有图像,每个类别都可以访问。 回答2 您无需“加载”它们,它们是嵌入式的。 您只需要实例化图像。 最好有一个类来管理共享资源,例如: public class TextureAssets { [Embed
  • 如何在AS3中创建共享按钮(How to create a share button in AS3)
    问题 我想知道是否有人知道创建AS3 Facebook分享按钮的好方法? 我需要能够自定义标题,描述和图片。 谢谢! 回答1 看:http://www.facebook.com/facebook-widgets/share.php http://www.facebook.com/sharer.php?u=<url>&t=<title> 在Flash中: import flash.net.navigateToURL; import flash.net.URLVariables; import flash.net.URLRequest; import flash.net.URLRequestMethod; share_btn.addEventListener(MouseEvent.CLICK, shareClickHandler); function shareClickHandler(evt:MouseEvent):void { var varsShare:URLVariables = new URLVariables(); varsShare.u = 'http://domain.com/pageN.html'; varsShare.t = 'Title Page'; var urlFacebookShare:URLRequest = new URLRequest('http:/
  • Flash开发,Flash语言(AS2 / 3)和Flash IDE的隐藏功能/技巧(Hidden features/tricks of Flash development, Flash language (AS2/3), and Flash IDE [closed])
    问题 从目前的情况来看,这个问题不适合我们的问答形式。 我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。 如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 伙计们,令我感到非常惊讶的是,我已经追踪了一段时间的“隐藏功能”系列中还没有Flash隐藏功能。 最近有一种AS3 / Flex,但它不是很活跃,在这里说Flash时,我并不是完全指AS3。 “隐藏功能”系列非常适合使用某种特定语言的用户。 它在同一位置显示了绳索和某些有价值的技巧。 我认为这是一个绝妙的主意。 甚至专家有时也会找到他们从未听说过的技巧。 与其他编程语言相比,当我开始使用Flash时,我对Flash IDE和Flash的奇怪概念感到惊讶。 那么,这就是: Flash作为一种语言(AS2 / 3)和Flash IDE有哪些隐藏的功能? 让乐趣开始。 回答1 [Flash IDE] 这不是功能,而是陷阱。 为FLA指定文档类时,编译器不会对该类进行子类化,而是对其进行修改。 当您有多个具有相同文档类的SWF都被加载到另一个SWF中时,这可能会导致问题(因为不能将具有相同名称的两个类并排加载到同一应用程序域中)。 结果是第一个被加载,第二个使用第一个的修改后的类,产生了奇怪的错误(可以想象)。 解决方案是:
  • Flash AS3:ReferenceError:错误#1056:无法创建属性(Flash AS3: ReferenceError: Error #1056: Cannot create property )
    问题 我在Flash / AS3中写东西,遇到了这个问题: ReferenceError: Error #1056: Cannot create property txtInput on package.name.DocumentClasss 基本上,我有一个文档类,并且可以创建动画片段剪辑的实例并进行编译而不会出现问题。 但是当我在舞台上放置一个输入文本字段(调色板中的“ T”图标)时,由于上面的错误,它拒绝编译。 我不确定这是否有所不同,但是我正在FlashDevelop中编写我的ActionScript,并在Flash IDE中进行了编译。 我还在Publish Settings -> Flash -> Script -> Settings... -> Errors Warnings Mode选择了Strict Mode和Warnings Mode 。 我已经在网上搜索了解决方案,唯一的建议似乎是不要在Flash IDE中的stag上插入文本字段,而是在文档类中动态创建它们。 有更好的解决方案吗? 谢谢 回答1 听起来好像您没有选中“自动声明阶段实例” ,因此,如果要添加命名实例,则需要在您的类中声明它 import flash.text.TextField; ... public var txtInput:TextField;
  • e4x / as3: How to access a node with a dash in its name
    the e4x implementation in as3 doesn't seem to be able to handle node names that have dashes in them. The musicbrainz api returns xml with a node named artist-list and i can't seem to get it to let me access the node. sample from http://musicbrainz.org/ws/1/artist/?type=xml&name=dr%20dog : <metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" xmlns:ext="http://musicbrainz.org/ns/ext-1.0#"> <artist-list offset="0" count="1090"> <artist type="Group" id="e9aed5e5-ed35-4244-872e-194862290295" ext:score="100"> </artist> </artist-list> </metadata> If I try to access it like so myXml.artist-list i get
  • 是否可以创建“命令行”瑞士法郎?(Is it possible to create a 'command line' swf?)
    问题 我希望能够编写一个可作为命令行应用程序运行的.swf文件。 换句话说,我将能够创建可以与stdin和stdout交互的actionscript类,然后可以在命令行中直接执行该.swf。 我怀疑这是不可能的。 有人可以确认吗? 编辑:几个答案指出,使用Flash进行命令行工作可能不是最佳选择。 在大多数情况下,我都完全同意。 我之所以这样问,是因为我想进行一些AS3代码生成,并且在运行时对AS3类进行思考要比解析代码或遍历asdoc生成的中间XML容易。 我现在正在Ruby中使用XML方法,但是希望有一个更干净的解决方案! 回答1 不,不可能。 您可以做的最好的事情就是一个独立的应用程序(可以在Flash中制作,也可以使用Adobe Player网站上的投影机版本的Flash Player制作)。 以及为什么要这么做-Flash很棒,因为它具有强大的GUI功能。 还有许多其他更适合命令行的编程语言(Python或Ruby,或者,甚至禁止使用Perl) 回答2 是的! 实际上是有可能的。 您可以创建一个纯AS3 AIR项目(没有任何应用程序窗口),然后使用ADL(AIR Debug Launcher)从命令行运行。 ADL将执行您的SWF,并将在运行时将您给它的所有参数直接传递给应用程序-全部从命令行开始! 要从AS3中读取参数,只需将以下代码添加到您的主类中: package
  • AS3生成动态SWF?(AS3 to Generate Dynamic SWF?)
    问题 是否可以使用AS3以编程方式生成.swf文件? 我的小应用程序所做的是使用FileReference加载一堆图像,现在我想将它们编译成供用户下载的独立swf(该swf将是幻灯片)。 [编辑] 我的要求似乎有些误解。 我想要一个已编译的swf,用户可以从中选择一些图像,然后按一个按钮,从而swf将创建并编译包含所述图像的第二个swf。 由于这是一个独立的应用程序,因此不会有服务器端的交互。 我在想的是,将有一个代表动态类的字符串。 当用户选择其图像时,会将适当的嵌入标签添加到此字符串,然后将其编译并保存到用户的桌面。 所以我的问题是,编译后的swf可以生成并编译第二个swf吗? 回答1 看一下这个库,它使您可以在运行时创建一个.swf。 https://github.com/claus/as3swf 回答2 通过生成相关代码并运行as3编译器,应该可以在服务器端进行操作。 回答3 我还没有对软件包进行彻底调查,但是As3Eval库似乎正在按照您的要求进行操作-将AS3实时编译为可执行字节码(在没有服务器交互的客户端上)。 查看演示。 我不确定它是否支持图像嵌入-也许您可以在动态构建的源代码中将图像数据编码为base64字符串。 回答4 您还可以使用命令行工具swfmill从XML文档创建SWF文件。 它没有很好的文档记录,但是对于基本用法(例如创建资产库),您应该找到所需的内容
  • as3 Air浏览SD卡上的文件?(as3 Air browse for file on sd card?)
    问题 希望能够使用as3 air从用户手机中浏览和选择文件。 此代码仅弹出一个上传框,并显示“未找到文件”。 但是我知道我的手机上有一个zip,所以它一定不能选择正确的文件夹路径。 如何更改它以使其能够访问整个手机? function unzip_init():void{ fileFilter = new FileFilter("selected your zip file.", "*.zip; *.gz2; *.bz2;"); file = new File(); //file.browseForDirectory("Choose a directory"); // Only got me the directory path file.browseForOpen("Open", [fileFilter]); file.addEventListener(Event.SELECT, onSelectedFile); } 回答1 要从SD卡获取所有mp3文件 var ROOT:File = File.documentsDirectory.resolvePath("/sdcard/"); var FILES:Array = ROOT.getDirectoryListing(); var TrackN:int; var SUBFOLDER:String; for (var i:int =
  • Flash AS3: ReferenceError: Error #1056: Cannot create property
    I am writing something in Flash/ AS3, and I came across this problem: ReferenceError: Error #1056: Cannot create property txtInput on package.name.DocumentClasss Basically I have a document class, and I can create instances of movieclips clips and compile without issues. But when I put a input text field ("T" icon in the palette) on the stage, and it refuses to compile, with the above error. I am not sure if this makes a difference, but I am writing my ActionScript in FlashDevelop, with compilation done in the Flash IDE. I also have both Strict Mode and Warnings Mode selected under Publish
  • 如何解决ActionScript 3(AS3)中的关闭问题(How to fix closure problem in ActionScript 3 (AS3))
    问题 在下面的代码中,我尝试加载一些图像,并在它们分别加载后立即放入舞台。 但这是错误的,因为仅显示最后一张图像。 我怀疑这是关闭问题。 我该如何解决? AS3中的闭包行为与Java Script中的行为不同吗? var imageList:Array = new Array(); imageList.push({'src':'image1.jpg'}); imageList.push({'src':'image2.jpg'}); var imagePanel:MovieClip = new MovieClip(); this.addChildAt(imagePanel, 0); for (var i in imageList) { var imageData = imageList[i]; imageData.loader = new Loader(); imageData.loader.contentLoaderInfo.addEventListener( Event.COMPLETE, function() { imagePanel.addChild(imageData.loader.content as Bitmap); trace('Completed: ' + imageData.src); }); trace('Starting: ' + imageData.src)
  • AS3 Event Bubbling outside of the Scenegraph/DisplayList
    Hi just wondering if it is possible to take advantage of event bubbling in non display list classes in AS3. For example in the model of an application where there is a City class that contains many Cars. What methods are there to attach an event listener to a City object and receive events that bubble up from the child Cars. To clarify The City and Car objects are not part of the display list, they are not DisplayObjects. So can bubbling be implemented outside of the display list somehow? As far as I know, this is not possible without manually attaching event listeners to each Car object and