bitmapをコピーしてなんとか成功

spriteコピーできない対策として、bitmapをコピーする方法で対処。
疲れた・・・

package 
{
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;

 import flash.text.TextField;
 import flash.utils.Timer;
 
 // 麻雀素材まつセン
 // http://www4.cty-net.ne.jp/~l6000all/
 
 /**
  * ...
  * @author hato
  */
 public class Main extends Sprite 
 {
  public var tf:TextField = new TextField();
  
  // 各牌
  private var img_manz:Array = new Array();
  private var img_souz:Array = new Array();
  private var img_pinz:Array = new Array();
  private var sprite_ary:Array = new Array();
  
  // 読み込んだ数
  private var n_request_all:int = 0;
  private var n_request_now:int = 0;
   
  public function Main():void 
  {
   if (stage) init();
   else addEventListener(Event.ADDED_TO_STAGE, init);
  }
  
  private function init(e:Event = null):void 
  {
   removeEventListener(Event.ADDED_TO_STAGE, init);
   // entry point   
   
   /*
    * 牌画像読み込み
    * var baseurl:String = "http://192.168.1.11/~hato/bin/img/";
    */
   var baseurl:String = "img/";
   var h_type:Array = ["man", "sou", "pin"];
   
   for (var cnt:String in h_type) {
    
    var type:String = h_type[cnt];
    for (var i:int = 1; i <= 9; i++) {
     
     var str:String = baseurl + type + i + "u.gif";  
     var imgloader:Loader = new Loader();
     imgloader.contentLoaderInfo.addEventListener(
      Event.COMPLETE, onSub(type, i));
     
     function onSub(type:String, i:int) :Function {  
      return function (e:Event):void{;  
      //trace(e.target.name);  
       
      OnImageLoadComplete(e, type, i);
      } ;  
     }
     
     imgloader.load(new URLRequest(str));
     n_request_all++;
    }
   }
   
   /*
    * 表示用スプライトセット。移動しないので固定位置。
    */
   for (var j:int = 0; j <= 11; j++) {
    var sprite:Sprite = new Sprite();
    //sprite.x = j * 30;
    sprite_ary[j] = sprite;
   }
  }
  
  private function onXMLLoad(event:Event):void
  {
     var xml:XML = new XML(event.target.data);
     //trace(xml);
     
     var east:String = xml.child("EAST");
     //trace("east=" +east);
     
   //var line:String = "m:5,s:8,p:3";
   var ary:Array = east.split(",");
   for (var cnt:String in ary) {
    var unit:String = ary[cnt];// m:5
    var unit_ary:Array = unit.split(":");
    var type: String = unit_ary[0];// m
    var num:  String = unit_ary[1];// 5
    //trace(cnt  + type + num);
    
    var sprite:Sprite = sprite_ary[cnt] as Sprite;
    var bitmap: Bitmap;
    switch (type) {
     case "m":
      bitmap = img_manz[num];
      break;
     case "s":
      bitmap = img_souz[num];
      break;
     case "p":
      bitmap = img_pinz[num];
      break;
     default:
      bitmap = img_manz[num];
      ;
    }
    
    // bitmap コピー
    var bitmapData:BitmapData = bitmap.bitmapData.clone();
    var cp_bitmap:Bitmap = new Bitmap(bitmapData);
    sprite.addChild(cp_bitmap);
    
    // 大きさ
    sprite.scaleX = 2.0;
    sprite.scaleY = 2.0;
    sprite.x = int(cnt) * 30;

    /*
     * 表示&マウスクリック時のイベント定義
     */
    sprite.addEventListener(flash.events.MouseEvent.CLICK,onClick3(cnt, unit));  
    function onClick3(cnt: String, str:String) :Function{
     return function (e:MouseEvent):void{;  
     //trace("str",str);
     //trace(e.target.name);  
     onClick(cnt,str);
     } ;  
    }
    addChild(sprite);
   }
  }
  
  
  private function OnImageLoadComplete(event:Event, type:String, i:int):void 
  {
   var loader:Loader = Loader(event.target.loader);
   var bitmap:Bitmap = Bitmap(loader.content);
   //trace(bitmap);
   //trace(type + String(i));
    
   switch(type) {
    case "man":
     img_manz[i] = bitmap;
     break;
    case "sou":
     img_souz[i] = bitmap;
     break;
    case "pin":
     img_pinz[i] = bitmap;
     break;
    default:
     //trace("other");
     img_manz[i] = bitmap;
   }
   
   //img_manz.push(img as Sprite);
   //var sprite:Sprite = img as Sprite;
   //sprite.x = i * 30;
   //sprite.y = int(cnt) * 30;
   //addChild(sprite);
   n_request_now++;
   if (n_request_all == n_request_now) {
    trace("img complete!");
    
    /*
     * 情報取得
     * var request:URLRequest = new URLRequest(
     * "http://192.168.1.11/~hato/bin/cgi-bin/test.cgi?What+is+Happens!");//
     */
    var xmlloader:URLLoader = new URLLoader();
    var url:URLRequest = new URLRequest(
     "http://192.168.1.11/~hato/bin/cgi-bin/test.cgi?What+is+Happens!\&" +
     Math.floor(Math.random() * 1000)//ブラウザキャッシュ対策
     );
    xmlloader.addEventListener(Event.COMPLETE, onXMLLoad);
    xmlloader.load(url);
   
   }
  }
   
  private function onClick(cnt:String, str:String): void
  {
   trace("click cnt=" +cnt+ " str=" +str);
  }
 }
}
#!/usr/bin/perl

print "Content-type: text/plain; charset=utf-8\n\n";
$str = $ENV{"QUERY_STRING"};
print <<END_OF_TEXT;
<xml>
        <EAST>m:7,m:7,s:4,s:5,s:5,s:6,s:6,s:7,p:1,p:8,p:9,j:2</EAST>
        <RANDOM>$str</RANDOM>
</xml>
END_OF_TEXT