Skip to content

Instantly share code, notes, and snippets.

View lynxerzhang's full-sized avatar
🤒

frankwinter lynxerzhang

🤒
  • geckostudio
  • shanghai
View GitHub Profile
@lynxerzhang
lynxerzhang / WeakMap.as
Created March 25, 2013 10:28
addWeak方法利用Dictionary可以针对键设置弱引用, 将值传入, 获取该值则是通过一个自定义键(比如任意字符串)
package
{
import flash.utils.Dictionary;
/**
* this class inspiration from gskinner.com
* @see wwww.gskinner.com
*/
public class WeakMap
{
package
{
import flash.display.Sprite;
import flash.events.ErrorEvent;
import flash.events.UncaughtErrorEvent;
import flash.external.ExternalInterface;
public class Console extends Sprite
{
public function Console():void
package
{
/**
* forked from http://jacksondunstan.com/articles/1848
*/
public class SortedArray
{
private var _ary:Array = [];
private var _start:int = 0;
private var _middle:int;
package utils
{
import flash.display.SimpleButton;
import flash.errors.IllegalOperationError;
import flash.utils.Dictionary;
/**
*
* @example
*
@lynxerzhang
lynxerzhang / 包外类的使用问题总结
Last active December 10, 2015 05:18
包外类的使用限制记录
诸如目前无法在外部实例化一个可以存储指定包外类类型的Vector对象
问题重现:
(使用一个用数组实现的对象池类在存储包外类时, 由于无法获取到包外类的类定义,
造成一个"ReferenceError: Error #1065 :xx变量未定义"的报错, 下面假设该包外类类名为TestInternal, 位于gist.github.com包下的Test类中)
/**
* TODO
* 该方法判断指定对象是否为包外类所创建
* @param runIn
*
@lynxerzhang
lynxerzhang / internal class's instantiated problem
Created November 15, 2012 05:39
internal class 'can' be instantiated in the external context
/**
包外类和以Internal申明的类无法在外部实例化, 但一个方法可以使其在外部实例化。
将该类实例或类引用保存在外部可访问的数据结构内, 然后获取,外部定义的变量名需要以*号为类型符。
需要获取类定义的话, 可通过访问Object的constructor属性来获取从而避免通过平常方式(
getDefinitionByName)获取时产生的ReferenceError错误, 同时调用方法是需要使用数组访问符[]来
调用这些类所定义的方法
internal class InternalClassShow{
public function show():void{
@lynxerzhang
lynxerzhang / 'in' in as3
Created October 31, 2012 16:03
关于as3中in操作符的使用问题
in 用于在诸如Dictionary Object 对象中尝试返回指定键是否存
var d = new Dictionary();
var s = new Sprite();
d[s] = true;
trace(s in d); // true
但目前假设d对象是自定义类, 并且覆盖了Object的toString()方法,
同时在toString()方法中, 正巧有访问为空的自定义属性,而s又正好不是d
对象的键, 那么此时居然会触发TypeError空对象错误, 解决方法是使用[]
@lynxerzhang
lynxerzhang / Delegate.as
Last active October 11, 2015 17:08
Delegate test
package
{
import flash.events.IEventDispatcher;
import flash.utils.Dictionary;
/**
* @inspired from 'Bumpslide ActionScript Library' s Delegate class
* TODO
*/
public class Delegate
@lynxerzhang
lynxerzhang / ScaleDisplayObjectDemo.as
Last active October 11, 2015 11:18
scale displayobject(等比例缩放偏移)
/**
* @param resource
* align the specfied resource to top-left coordinate
*/
function handleResetTopLeftPos(resource:Sprite):Sprite{
var s:Sprite = new Sprite();
resource.parent.addChildAt(s, resource.parent.getChildIndex(resource));
s.addChild(resource.parent.removeChild(resource));
var leftTop:Point = getLeftTopPosition(resource);
var originX:Number = resource.x;
@lynxerzhang
lynxerzhang / getActualBitmapData.as
Last active October 11, 2015 10:28
get displayObject's bitmap copy(filters, colorTransform)
function getActualBitmapData(dis:DisplayObject):Sprite{
//TODO, the dis must be on the stage
var realBounds:Rectangle = dis.getBounds(dis.parent);
var c:ColorTransform = dis.transform.colorTransform;
var b:Rectangle = new Rectangle(0, 0, realBounds.width, realBounds.height);
var mt:Matrix = dis.transform.matrix;
var len:int = dis.filters.length;
if(len > 0){
for(var i:int = 0; i < len; i ++){
var temp:BitmapData = new BitmapData(realBounds.width, realBounds.height, true, 0);