Tag: actionscript 3

Flash / ActionScript 3.0中的StackTrace

我想在我的代码的任何函数中看到堆栈跟踪,所以我做了这样的事情来调用它并打印堆栈跟踪: public function PrintStackTrace() { try { throw new Error('StackTrace'); } catch (e:Error) { trace(e.getStackTrace()); } } 我想知道是否有其他方式来做到这一点。 在某些地方,Error类会创build堆栈跟踪,但也许它不会使用ActionScript 3.0来实现,所以也许这不是可行的,但是我想知道。 谢谢!

在ActionScript 3中如何从类的实例获取到类对象?

你如何从该类的一个实例获得一个actionscript类的实例? 在Python中,这将是x.__class__ ; 在Java中, x.getClass(); 。 我知道有一些可怕的黑客存在这样做,但我正在寻找一个内置的语言设施,或者至less是一个build立在可靠的东西上的图书馆例程。

通过AS3字典高效循环

for (var k in dictionary) { var key:KeyType = KeyType(k); var value:ValType = ValType(dictionary[k]); // <– lookup // do stuff } 这是我用来循环字典中的条目。 正如你在每次迭代中所看到的,我在字典中执行查找。 是否有更有效的迭代字典(同时保持访问键)?

在ActionScript3中卸载ByteArray

如何在ActionScript 3中强制从内存中卸载ByteArray ? 我试过了(没有成功): byteArray.length = 0; byteArray = new ByteArray(); 和 for ( var i:int=0; i < byteArray.length; i++ ) { byteArray[i] = null; }

PNG是否包含像JPG这样的EXIF数据?

我想知道PNG是否包含如下的数据? 我所做的是将JPG文件转换为PNG格式,我期待检索我在JPG上的相同信息,如下所示: 目前使用这个as3库来读取数据。 IDF0 — IDF @ [134 – 248](9项) 方向(SHORT):1 XResolution(RATIONAL):72/1 Y分辨率(RATIONAL):72/1 ResolutionUnit(SHORT):2 软件(ASCIIx16):QuickTime 7.6.6 DateTime(ASCIIx20):2011:10:02 22:43:37 HostComputer(ASCIIx16):Mac OS X 10.6.8 Exif IFD(LONG):8 34853 GPS IFD(长):248 EXIF IDF — IDF @ [8 – 134](10项) ExifVersion(UNDEFINEDx4):0220 DateTimeOrigina(ASCIIx20):2011:04:14 17:22:01 UserComment(UNDEFINEDx63):ASCII FlashpixVersion(UNDEFINEDx4):0100 ColorSpace(SHORT):1 PixelXDimension(LONG):1022 PixelYDimension(LONG):486 未知(ASCIIx13):图像标签 – 大声笑 SceneCaptureType(SHORT):0 GPS IDF — IDF @ [248 – 338](7项) […]

要传递参数给AS3中的事件监听器,简单的方法是…它存在吗?

预期/伪示例: stage.addEventListener(MouseEvent.CLICK, onClick.someWayToPassParameters(true, 123, 4.56, "string")); function onClick(e:MouseEvent):void { trace("Received " + someWayToRetrieveParameters().b/i/n/s + "."); } 多年来(3〜4年),在每一个网站,论坛,博客上,无论我在哪里search,人们告诉我没有简单的方法来做到这一点。 他们通常build议: 将侦听器添加到dynamic对象,您可以在其中将该值设置为一个额外的属性,并在该函数中引用它(e.target.property / e.currentTarget.property)。 并不是所有的类都是dynamic的 例如,它在Sprite上不起作用。 使用自定义类扩展对象的类以添加属性或使其变为dynamic。 你必须每次创build一个全新的调整类。 使用匿名函数作为事件处理程序。 没有参考(这是丑陋的)。 要删除监听器以释放资源,你必须使用arguments.callee从函数本身内部完成。 在事件处理程序中使用参数调用另一个函数。 而在事件处理程序调用的地方去参数呢? 将事件处理程序保存在与参数相同的作用域中。 违背语义混乱。 在接收目标和参数的函数中封装事件处理程序定义和addEventListener调用。 它可以混合使用示波器,但是它非常接近。 但是你必须小心。 …其他许多build议的解决方法。 我只想传递一个参数给事件处理函数,所以我可以在函数内部使用它,就像任何普通的函数一样! 我要求太多吗?

除了渲染vector之外,AS3中的主要性能击球手是什么?

在ActionScript 3中,使用vectorgraphics是对项目性能造成巨大损害的保证方式。 通过使用.copyPixels()通过其BitmapData对象代替所有vectorgraphics,对所有graphics使用单个Bitmap将产生可笑的性能提升,并且对于像我自己在Flash中开发游戏的人员是必不可less的。 除此之外,我不太确定下一个我应该瞄准和试图优化的主要事情是什么。 我确实使用了很多内置的三angular函数,但它们似乎并没有影响那么多。 我知道有一些图书馆用近似方法和类似的方法来优化math,但到目前为止我还没有发现这些必要的。 还有其他大量的已知点,我应该看看? 我更多的是指内置的东西,我应该小心(如避免向量渲染),而不是如何提高自己的编码风格。

将逗号插入数字string

嘿,我试图在一个string上执行一个向后的正则expression式search,把它分成3个数字组。 就我从AS3 文档中可以看到,向后search在reg ex引擎中是不可能的。 这个练习的要点是把三连词的逗号插入一个数字,如下所示: 10000000 => 10,000,000 我正在考虑这样做: string.replace(/(\d{3})/g, ",$1") 但是由于search没有发生在后面,所以这是不正确的,replace$ 1将只能用于第一场比赛。 我感觉我会更好地使用循环执行此任务。 更新: 由于AS3不支持lookahead这是我已经解决了它。 public static function formatNumber(number:Number):String { var numString:String = number.toString() var result:String = '' while (numString.length > 3) { var chunk:String = numString.substr(-3) numString = numString.substr(0, numString.length – 3) result = ',' + chunk + result } if (numString.length > […]

从数组中获得最小值或最大值的最佳方法是什么?

假设我有一组数字: [2,3,3,4,2,2,5,6,7,2] 在数组中find最小值或最大值的最佳方法是什么? 现在,为了获得最大值,我循环访问数组,如果variables大于现有值,则将其重置为该值: var myArray:Array /* of Number */ = [2,3,3,4,2,2,5,6,7,2]; var maxValue:Number = 0; for each (var num:Number in myArray) { if (num > maxValue) maxValue = num; } 这似乎不是执行此操作的最佳方法(尽可能避免出现循环)。

从一个旋转的矩形计算边界框坐标

我有一个矩形的左上angular的坐标以及它的宽度,高度和旋转从0到180和-0到-180。 我正在尝试获取矩形周围实际框的边界坐标。 计算边界框坐标的简单方法是什么? Min y,max y,min x,max x? A点并不总是在最小范围内,它可以在任何地方。 如果需要,我可以在as3中使用matrix转换工具包。