# Type 1007 Constructor Error- nothing like anyone else's thread

**URL:** <https://forum.kirupa.com/t/type-1007-constructor-error-nothing-like-anyone-elses-thread/331759>\
**Category:** flash\
**Created:** [October 14, 2013, 2:15pm UTC](https://forum.kirupa.com/t/type-1007-constructor-error-nothing-like-anyone-elses-thread/331759 "2013-10-14T14:15:31Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![cloa513](https://avatars.discourse-cdn.com/v4/letter/c/e8c25b/32.png) [@cloa513](https://forum.kirupa.com/u/cloa513)\
**Post date:** [October 14, 2013, 2:15pm UTC](https://forum.kirupa.com/t/type-1007-constructor-error-nothing-like-anyone-elses-thread/331759/1 "2013-10-14T14:15:31Z")

</div>

I have looked at many threads but none are similar.

A few have looked at some/all the code but none have found the source of the error.

Please help- I have done a lot of work on this.

In Main.as  
package  
{  
import flash.display.Bitmap;  
import flash.display.Sprite;  
import flash.events._;  
import flash.ui.Keyboard;  
import flash.accessibility.AccessibilityImplementation;  
import flash.display.Bitmap;  
import flash.display.MovieClip;  
import flash.text.TextField;  
import flash.text.TextFormat;  
import flash.display.Sprite;  
import flash.utils.ByteArray;  
import flash.events.MouseEvent;  
import flash.text.AntiAliasType;  
import flash.utils.describeType;  
import boxsprite;  
import [flash.net](http://flash.net)._;  
import flash.display.Stage;  
import board;  
import flash.events.KeyboardEvent;  
import flash.ui.KeyboardType;  
import Set;  
public class Main extends Sprite  
{  
[Embed(source="…/lib/Board.jpg")]  
private var boardClass :Class;

```
	public function Main():void
	{
		if (stage) init();
		else addEventListener(Event.ADDED_TO_STAGE, init);
	}
	private var t1:Sprite;
	private var t2:Sprite;
	private var t3:Sprite;
	private var t4:Sprite;
	private var t5:Sprite;
	private var t6:Sprite;
	private var t7:Sprite;
	private var base:Sprite;
	private var boardonScreen:Bitmap;
	private var box1:Sprite;
	private function init():void
	{removeEventListener(Event.ADDED_TO_STAGE, init);
        boardonScreen= new boardClass() as Bitmap;
		 boardonScreen.x = 0;
		 boardonScreen.y = 0;
         stage.addChild(boardonScreen);
		box1 = new boxsprite();
		box1.x = 480;
		box1.y = 0;
		stage.addChild(box1);
		base = new tile ();
	    base.x =672;
		base.y = 448;
		stage.addChild(base);
		t1 = new tile ();
		t1.x = 480;
		t1.y = 448;
		stage.addChild(t1);
		t2 = new tile ();
		t2.x = 480;
		t2.y = 416;
		stage.addChild(t2);
        t3 = new tile ();
		t3.x = 480;
		t3.y = 384;
		stage.addChild(t3);
		t4 = new tile ();
		t4.x = 480;
		t4.y = 352;
		stage.addChild(t4);
		t5 = new tile();
		t5.x = 480;
		t5.y = 320;
		stage.addChild(t5);
		t6 = new tile ();
		t6.x = 480;
		t6.y = 288;
		stage.addChild(t6);
		t7 = new tile ();
		t7.x = 480;
		t7.y = 256;
       stage.addChild(t7);}}}

```

package {  
import flash.display.Bitmap;  
import flash.display.Sprite;  
import flash.events._;  
import flash.events.KeyboardEvent;  
import flash.events.MouseEvent;  
import flash.text._;  
import flash.text.TextField;  
import flash.ui.Keyboard;  
import flash.utils._;  
import Math;  
import Set;  
import StatusBox;  
import adobe.utils.CustomActions;  
import flash.display.Bitmap;  
import flash.display.Sprite;  
import flash.events._;  
import flash.ui.Keyboard;  
import mx.core.BitmapAsset;  
//import board;  
import flash.accessibility.AccessibilityImplementation;  
import flash.display.MovieClip;  
import flash.text.TextField;  
import flash.text.TextFormat;  
import flash.display.Sprite;  
import flash.utils.ByteArray;  
import flash.events.MouseEvent;  
import flash.text.AntiAliasType;  
import flash.utils.describeType;  
import [flash.net](http://flash.net)._;  
import StatusBox;  
import flash.display.InteractiveObject;  
import flash.text.TextFieldType;  
import flash.events.FocusEvent;  
import flash.display._;  
import flash.display.Stage;  
import flash.events.KeyboardEvent;  
import flash.utils.\*;  
import boxtrans;  
import flash.events.EventDispatcher  
import StatusBox;  
///These import functions are used to ease the button back into place after a drag

```
public class tile extends Sprite
{ private var kana:String;
	private var value:uint;
	//private const backingcolour:uint = 0xe0e0e0;
	private var type:uint;
	private var isSetBox:Boolean;
	private static var valueaggreg:uint; //value of kanjitile
	static private var ret:Boolean; //do you return tiles from board
	static private var yplace:uint = 0;
	     //private var m_nDoubleClickSpeed:Number = 300;
		//private var m_toMouse:Number;
	private var xx:int;
	private var yy:uint;
	private var initialx:uint;
	private var initialy:uint;
	private var finalx:uint;
	private var finaly:uint;
    private var id:uint;
	private var selectghostList:Vector.&lt;String&gt;=new&lt;String&gt;["&#12414;,&#12510;","&#12416;,&#12512;","&#12418;,&#12514;","&#12363;,&#12459;","&#12367;,&#12463;","&#12371;,&#12467;","&#12394;,&#12490;","&#12396;,&#12492;","&#12398;,&#12494;","&#12400;,&#12496;","&#12406;,&#12502;","&#12412;,&#12508;","&#12399;,&#12495;","&#12405;,&#12501;","&#12411;,&#12507;","&#12401;,&#12497;","&#12407;,&#12503;","&#12413;,&#12509;"];
    private var selectkanaList:Vector.&lt;String&gt;=new &lt;String&gt;["&#12415;&#12419;,&#12511;&#12515;", "&#12415;&#12421;,&#12511;&#12515;", "&#12415;&#12423;,&#12511;&#12519;", "&#12365;&#12419;,&#12461;&#12515;", "&#12365;&#12421;,&#12461;&#12517;", "&#12365;&#12423;,&#12461;&#12519;", "&#12395;&#12419;,&#12491;&#12515;", "&#12395;&#12421;,&#12491;&#12517;", "&#12395;&#12423;,&#12491;&#12519;", "&#12403;&#12419;,&#12403;&#12419;", "&#12403;&#12421;,&#12499;&#12517;", "&#12403;&#12423;,&#12499;&#12519;", "&#12288;&#12288;&#12402;&#12419;,&#12498;&#12515;", "&#12402;&#12421;,&#12498;&#12517;", "&#12402;&#12423;,&#12498;&#12519;", "&#12404;&#12419;,&#12500;&#12515;", "&#12404;&#12421;,&#12500;&#12517;", "&#12404;&#12423;,&#12500;&#12519;"];
    private var selectghostvalueList:Vector.&lt;uint&gt; = new &lt;uint&gt;[2, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2];
private const multiplier:Array = [["TW","1","1","DL","1","1","1","TW","1","1","1","DL","1","1","TW"],["1","DW","1","1","1","TL","1","1","1","TL","1","1","1","DW","1"],["1","1","DW","1","1","1","DL","1","DL","1","1","1","DW","1","1"],["DL","1","1","DW","1","1","1","DL","1","1","1","DW","1","1","DL"],["1","1","1","1","DW","1","1","1","1","1","DW","1","1","1","1"],["1","TL","1","1","1","TL","1","1","1","TL","1","1","1","TL","1"],["1","1","DL","1","1","1","DL","1","DL","1","1","1","DL","1","1"],["TW","1","1","DL","1","1","1","DL","1","1","1","DL","1","1","TW"],["1","1","DL","1","1","1","DL","1","DL","1","1","1","DL","1","1"],["1","TL","1","1","1","TL","1","1","1","TL","1","1","1","TL","1"],["1","1","1","1","DW","1","1","1","1","1","DW","1","1","1","1"],["DL","1","1","DW","1","1","1","DL","1","1","1","DW","1","1","DL"],["1","1","DW","1","1","1","DL","1","DL","1","1","1","DW","1","1"],["1","DW","1","1","1","TL","1","1","1","TL","1","1","1","DW","1"],["TW","1","1","DL","1","1","1","TW","1","1","1","DL","1","1","TW"]];
private var vis:Boolean = true; //visibility

```

private var isSet:Boolean;  
[Embed(source="…/lib/Tile.gif")]  
private var tileClass:Class  
private var kanaList:Vector.\<String\> = new \<String\>[“あ,ア”, “あ,ア”, “え,エ”, “え,エ”, “い,イ”, “い,イ”, “お,オ”, “お,オ”, “う,ウ”, “う,ウ”, “う,ウ”, “う,ウ”, “か,カ”, “か,カ”, “け,ケ”, “け,ケ”, “き,キ”, “き,キ”, “く,ク”, “く,ク”, “こ,コ”, “こ,コ”, “さ,サ”, “さ,サ”, "　し,シ", "　し,シ", “す,ス”, “す,ス”, “そ,ソ”, “そ,ソ”, “す,ス”, “す,ス”, “た,タ”, “た,タ”, “て,テ”, “て,テ”, "　ち,チ", "　ち,チ", “と,ト”, “と,ト”, “つ,ツ”, “つ,ツ”, “ら,ラ”, “ら,ラ”, “れ,レ”, “れ,レ”, “り,リ”, “り,リ”, “ろ,ロ”, “ろ,ロ”, “る,ル”, “る,ル”, “だ,ダ”, “で,デ”, “じ,ジ”, “ど／ド”, “ず,ズ”, “ざ,ザ”, “ぜ,ゼ”, “ぞ／ゾ”, “な,ナ”, “ね,ネ”, “に,二”, “の,ノ”, “ぬ,ヌ”, “じゃ,ジャ”, “じゅ,ジュ”, “じょ,ジョ”, “ん,ン”, “しゃ,シャ”, “しゅ,シュ”, “しょ,ショ”, “や,ヤ”, “ゆ,ユ”, “よ,ヨ”, “は,ハ”, “ひ,ヒ”, “ふ,フ”, “へ,ヘ”, “ほ,ホ”, “ば,バ”, “ば,バ”, “ぶ,ブ”, “ぶ,ブ”, “び,ビ”, “び,ビ”, “ぼ,ボ”, “ぼ,ボ”, “べ,ベ”, “べ,ベ”, “ぱ,パ”, “ぴ／ピ”, “ぷ,プ”, “ぺ,ペ”, “ぽ,ポ”, “ま,マ”, “み,ミ”, "　む,ム", “め,メ”, “も,モ”, “を／ヲ”, “みゃ,ミャ”, “みゅ,ミャ”, “みょ,ミョ”, “きゃ,キャ”, “きゅ,キュ”, “きょ,キョ”, “にゃ,ニャ”, “にゅ,ニュ”, “にょ,ニョ”, “びゃ,びゃ”, “びゅ,ビュ”, “びょ,ビョ”, “ひゃ,ヒャ”, “ひゅ,ヒュ”, “ひょ,ヒョ”, “ぴゃ,ピャ”, “ぴゅ,ピュ”, “ぴょ,ピョ”, “っ,ッ”, “っ,ッ”];  
private var valueList:Vector.\<uint\>= new \<uint\>[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 10, 10, 5, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 20, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1];  
// Lists of Kana that can be replaced in the replace mode and the substitute Kana and Values  
//Start list of playerHand contents as I don’t know if Null is 0  
private var playernumber:uint; //total number of players  
private var allplayersHand:Array = [[], [], [], [],[], []];  
private var playerRound:uint = 1; //which player  
private var round:uint = 1; //round of the game  
private var aplayersHand:Array; // hand of the current player  
private var mode:uint;  
private var tileImage:Bitmap;  
private static var idvar:uint;  
static private var first:Boolean = true;  
private var special:Boolean = false;  
static private var handstatus:Vector.\<String\>;

```
public function tile()

{ this.addEventListener(Event.ADDED_TO_STAGE, sd); }

			private function sd(e:Event=void):void
			
	   {
		   removeEventListener(Event.ADDED_TO_STAGE, sd);
		    tileImage = new tileClass as Bitmap;
		addChild(tileImage);
		//Draws the japanese letter on the tile
		  var kanafield:TextField = new TextField();
		  kanafield.width = 40;
		  kanafield.height = 20;
		  kanafield.x = -2;
		  kanafield.y = -5;
		  kanafield.text == "";
		  trace(kanafield.text);
		  kanafield.wordWrap = true;
		  kanafield.background = true;
		  var kanafieldformat:TextFormat = new TextFormat();
		  kanafieldformat.size = 12;
		  kanafieldformat.font = "Arial";
		  kanafield.setTextFormat(kanafieldformat);
		  this.addChild(kanafield);
	      kanafield.mouseEnabled = false;
         //Draw the number on the tile
		  valuefield= new TextField();
		  valuefield.width = 30;
		  valuefield.height = 10;
		  valuefield.x = 0;
		  var valuefieldformat:TextFormat = new TextFormat;
		  valuefieldformat.size = 7;
		  valuefield.text = "";
		  valuefield.y = 15;
		  valuefield.background = false;
	      valuefield.setTextFormat(valuefieldformat);
		  this.addChild(valuefield);
		  valuefield.mouseEnabled = false;
	    //Add an event listener to the tile on the stage
		checktype(); }
		private function checktype():void
		{if (first != true)
{ id = idvar;
    idvar += 1;
	value = playerhandvalue[id];
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyboardinput);
this.addEventListener(StatusBox.STATUSBOXCHANGED,moderesponse);
this.addEventListener(StatusBox.HIDE, SetAlpha);
isSetBox = false }
else
{	special = true;
	first = false;
	this.addEventListener(Set.BOX_SET_CHANGED,btr)
		init();}}
private function init():void
{ trace("starting");
  stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
  stage.addEventListener(MouseEvent.MOUSE_UP, dnp);}
private function dnp(e:MouseEvent):void
{ stage.removeEventListener(KeyboardEvent.KEY_DOWN,myKeyDown);
	stage.removeEventListener(MouseEvent.MOUSE_UP, dnp);
	trace(playernumber);
	create();	}
private function myKeyDown(e2:KeyboardEvent):void
						{ if (e2.keyCode == Keyboard.NUMBER_1)
						{playernumber = 1;
							   trace(playernumber);}
							 else if (e2.keyCode == Keyboard.NUMBER_2)
							  {playernumber = 2;
							  trace(playernumber)}
							  else if (e2.keyCode == Keyboard.NUMBER_3)
							  {playernumber = 3;
							  trace(playernumber);}
							  else if (e2.keyCode == Keyboard.NUMBER_4)
							  {playernumber = 4;
							  trace(playernumber); }
							  else if (e2.keyCode == Keyboard.NUMBER_5)
							  {playernumber = 5;
							  trace(playernumber);}
							  else if (e2.keyCode == Keyboard.NUMBER_6)
							  {playernumber = 6; }
							  else {playernumber = 1;}}
private function create():void
						 { var listLength:uint;
								  var row:uint
								  aplayersHand = allplayersHand[playerRound];
								  for (var i:uint = (aplayersHand.length-1); i &lt;= 6; i+=1)
								  { listLength = kanaList.length;
									  row = int(Math.random() * listLength); &#12288;
								  trace (row);
								  trace(i);
								  aplayersHand* = [0, kanaList[row], valueList[row],]
								  trace (aplayersHand);
								  trace (aplayersHand*);
								   kanaList.splice(row,1);
								   valueList.splice(row, 1);
								  playerhandkana.push(kanaList[row]);
								 playerhandvalue.push(valueList[row]);}
						         dispatchEvent( new StatusBox(StatusBox.STATUSBOXCHANGED, 1)); }
              private function moderesponse(e:StatusBox):void
					{ mode = e.mode;
    cleanup();
	if (special == false)
	{
	if (mode == 1)
	   { this.visible = true;
	     this.kanafield.visible = true;
		 this.valuefield.visible = true;
		   this.x = 480;
	     this.y = (480 - (id*32));
		   kana = playerhandkana[id];
		   value = playerhandvalue[id];
		   kanafield.text = kana;
		   valuefield.text = String(value);
		   this.addEventListener(MouseEvent.MOUSE_DOWN, draglocation);
		   }
	else if (mode == 4)
	{if (handstatus[id] == "rem")
	    {handstatus[id] = "idle"; }	}	}
	else if (special == true)
	{ if (mode == 8)
	{stage.addEventListener(KeyboardEvent.KEY_DOWN, keyboardinput);
    for (var i:uint = 0; (handstatus.length - 1); i += 1)
	{if (handstatus* == "ret")
		 {kanaList.push(playerhandkana*);
		 valueList.push(playerhandvalue*);
		 endgame = true;} }
	if (endgame == true)
	{ dispatchEvent(new StatusBox(StatusBox.STATUSBOXCHANGED, 9, false, false));}
	else {{var cfh:Boolean = checkforwordtype(horzword);
		var cfv:Boolean = (checkforwordtype(vertword));
		var hl2:uint;
	    if ((handstatus.length &gt; 1 && (cfh == false) && (cfv == false)))
		{dispatchEvent(new StatusBox(StatusBox.STATUSBOXCHANGED, 10, false, false));}
		if (generalx.length == 0)
	    {for (var j:uint = 0; (handstatus.length - 1); i += 1)
		  {if (handstatus* == "set")
		     {hl2 += 1 } }
		  if (hl2 == 1)
		  {dispatchEvent(new StatusBox(StatusBox.STATUSBOXCHANGED, 10, false, false)); }}
		if ((cfh == true) && (cfv == true))
		 {dispatchEvent(new StatusBox(StatusBox.STATUSBOXCHANGED, 10, false, false));	}
	    else if (cfh == true)
	    {calctotalscore(valuehor, valuevert);}
		 else if (cfv == true)
		 {calctotalscore(valuevert, valuehor);	}	}	}
	    for (var k:uint = 0; k &lt; (handstatus.length - 1); k += 1)
		{ if(handstatus* == "idle" || "rem")
		 { var o:uint=0
			 allplayersHand[playernumber][o] = [kana, value];
			 o += 1; }}}
	else if (mode == 9)
     {if (ret == true)
	 { ret = false;
	  for (var m:uint = 0; m &lt; (handstatus.length - 1); m += 1)
		{ if(handstatus* == "set")
		 { var p:uint=0
			 allplayersHand[playernumber][p] = [kana, value];
			 p += 1; }}
	 dispatchEvent(new StatusBox(StatusBox.STATUSBOXCHANGED, 1, false, false));}
	 else { setinplace();
      		dispatchEvent(new StatusBox(StatusBox.STATUSBOXCHANGED, 1, true, true));
	 }	}
	 else if (mode == 10)
	 {isSet = false;
isSetBox = false;
this.visible = false;
create();}}}
private function btr(e:Set):void
    {if (e.valueex &gt; 0)
	{	if (e.kanaex == "kanji")
	 {kanafield.type = TextFieldType.INPUT;
	  value += e.valueex;
	  valuefield.text = String(value);}
	 else if (e.kanaex == "k+" )
	 {value += e.valueex;
	 valuefield.text = String(value);}
	 else if (e.kanaex == "k-")
	 {value-= e.valueex;
	 valuefield.text = String(value);}
	 else if (e.kanaex == "nokanji")
	 {kanafield.type = TextFieldType.DYNAMIC;
	  value = 0;
	  kana = "";
	  valuefield.text = "";}}
	 else
	 {if (kana == "")
	  { if (e.valueex == 0)
        {kana =selectghostList[selectkanaList.indexOf(e.kanaex, 0)];
		 value = selectghostvalueList[selectkanaList.indexOf(kana, 0)];
		 kanafield.text = kana;
		valuefield.text = String(value);}
	    else
		{kana = "";
		value = 0;
		kanafield.text = "";
		valuefield.text = "";}}}}
private var error:String;
private function SetAlpha(e:StatusBox):void
{ if (isSetBox == true)
	{this.alpha = 0;
	this.mouseEnabled = false;	}	}
	static private var scorelist:Array = [[]];
private function setinplace():void {
	if (isSet==true)	{
		/*var lob1:Sprite = new lob(kana, value);
			lob1.x = xx;
			lob1.y = yy;
			stage.addChild(lob1);*/
			removeEventListener(StatusBox.SETDOWN, setinplace);
			stage.removeChild(this);}
			else {stage.removeChild(this);}	}
static private var turnscore:uint;
static private function calctotalscore(main:Vector.&lt;uint&gt;,side:Vector.&lt;uint&gt;):uint
{ var tws:uint;
   var twm:uint;
   var amws:uint;
   var asws:uint;
	for (var i:uint = 0; (handstatus.length - 1); i += 1)
		  {if (handstatus* == "set")
		     { if (side* &gt; 0)
			     {asws += (side* + (exclusionvalue* * LM*)) * WM*; }
				amws += main* + (exclusionvalue* * LM*)
				twm += WM*
				generalx.push(exclusionx*);
				generaly.push(exclusiony*);
			 generalkana.push(exclusionkana*);
				generalvalue.push(exclusionvalue*);}}
		  exclusionx = new Vector.&lt;uint&gt;
		  exclusiony = new Vector.&lt;uint&gt;
		  exclusionkana = new Vector.&lt;String&gt;
		  exclusionvalue= new Vector.&lt;uint&gt;
		  tws = (asws + amws) * twm;
		 return tws;}
private function checkforwordtype(wordcheck:Vector.&lt;Boolean&gt;):Boolean
{	for (var i:uint = 0; handstatus.length - 1; i += 1)
{ var check:Boolean = false;
	if (handstatus* == "set")
    {if (wordcheck* == true)
	{check = true;}}}
	return check;}
private var endgame:Boolean;
private var playerhandkana:Vector.&lt;String&gt; = new Vector.&lt;String&gt;(7);
private var playerhandvalue:Vector.&lt;uint&gt; = new Vector.&lt;uint&gt;(7);
private var valuefield:TextField;
private function keyboardinput(e:KeyboardEvent):void
{ if (mode == 2 || 3 || 4 || 5||8)
	{if (e.keyCode == Keyboard.I)
	{ vis = !vis;
	if ((isSet=false)&&(isSetBox=false))
	{this.visible = vis;
     this.kanafield.visible = vis;
	this.valuefield.visible = vis;}}}
	if (mode == 8)
    {if (e.keyCode == Keyboard.R)
	{ret = !ret; }}}
private var kanafield:TextField = new TextField();
	   static private var generalx:Vector.&lt;uint&gt;;
	   static private var generaly:Vector.&lt;uint&gt;;
	   static private var generalkana:Vector.&lt;String&gt;;
	   static private var generalvalue:Vector.&lt;uint&gt;;
	   static private var exclusionx:Vector.&lt;uint&gt;;
		static private var exclusiony:Vector.&lt;uint&gt;;
		static private var exclusionvalue:Vector.&lt;uint&gt;;
		static private var exclusionkana:Vector.&lt;String&gt;;
		private function addExclusion():void
		{exclusionx[id]=xx;
		    exclusiony[id] = yy;
			exclusionkana[id] = kana;
			exclusionvalue[id] = value;	}
			private function removeExclusion():void
			{ exclusionvalue[id] = 0;
			  exclusionkana[id] = "0";
			  exclusionx[id] = 0;
			  exclusiony[id] = 0;	}

```

//The initial event performed when the button is first clicked;  
private function draglocation(e:MouseEvent):void  
{ removeEventListener(MouseEvent.MOUSE\_DOWN, draglocation);  
initialx = this.x;  
initialy = this.y;  
if (isSet==false ||isSetBox == false)  
{ stage.addChild(this)  
this.startDrag();  
this.addEventListener(MouseEvent.MOUSE\_UP, clickcheck);} }  
private function clickcheck(e:Event):void  
{ if (isSetBox==false || isSet == false)  
{ this.stopDrag();  
removeEventListener(MouseEvent.MOUSE\_UP, clickcheck);}  
finalx = this.x;  
finaly = this.y;  
if ((((finaly - initialy) ^ 2 + (finalx - initialx) ^ 2)^0.5) \< 5)  
{HandleDoubleClick(); } }  
private function HandleDoubleClick():void  
{if (this.x \< 480 && this.y \< 480)  
{if (isSet == false)  
{isSet = true;  
this.stopDrag();  
xx= int((this.x+16) / 32);  
this.x = 32_xx;  
yy= int((this.y+16) / 32);  
this.y = (32 \* yy);  
for (var i:uint = 0; i \< (exclusionx.length-1); i += 1)  
{if (xx == exclusionx_ && yy == exclusiony\*)  
{notSet = true }}  
if (generalx.length \> 0)  
{var notSet:Boolean;  
　　　for (var q:uint = 0; q \< (generalx.length - 1); q += 1)  
{if (xx == generalx[q] && yy == generaly[q])  
{notSet = true }  
else {notSet=false}}}  
if (notSet == false)  
{handstatus[id] = “set”;  
addExclusion();  
notSet = true; }  
else {isSet = false;}}  
else { handstatus[id] = “idle”;  
removeExclusion();}}  
else if (this.x \> 480 && this.y \< 480 && this.x \< 704)  
{if (isSetBox == false)  
{setonbox(); }  
else {takeoffbox(); }} }  
static private var killsetBox: Boolean;  
static private var WM:Vector.\<uint\>;  
static private var LM:Vector.\<uint\>;  
static private var horzword:Vector.\<Boolean\>;  
static private var vertword:Vector.\<Boolean\>;  
static private var idtoreplace:uint;  
private function rawscore(calcx:int, calcy:int):uint  
{ var xincr:uint = 1;  
var yincr:uint = 1;  
var value:uint = 0;  
while ((Number(boardarray[xx + (calcx \* xincr)][yy + calcy \* yincr])) != 0)  
{ value += (boardarray[xx + (calcx \* xincr)][yy + calcy \* yincr]);  
xincr += 1; yincr += 1; }  
if (value == 0)  
{ for (var i:uint = 0; exclusionx.length - 1;i+=1)  
{ if (((exclusionx\* == exclusionx[id]+calcx) && (exclusiony\* == exclusiony[id] + calcy)))  
{if (Math.abs(calcx) == 1)  
{ horzword[id] = true;}  
else {vertword[id] = true; } } } }  
return value; }  
static private var valuehor:Vector.\<uint\>;  
static private var valuevert:Vector.\<uint\>;  
static private var boardarray:Array=new Array[[]];  
private function checkscore():void  
{ switch(multiplier[exclusionx[id], exclusiony[id]])  
{case “TW”: WM[id] = 3; LM[id] = 1; break;  
case “DW”: WM[id] = 2; LM[id] = 1; break;  
case “TL”: LM[id] = 3; WM[id] = 1; break;  
case “DL”: LM[id] = 2; WM[id] = 1; break;  
default: LM[id] = 1; WM[id] = 1;}  
valuehor[id] = rawscore(1, 0) + rawscore( -1, 0);  
valuevert[id] = rawscore(0, 1) + rawscore(0, -1); }  
private function cleanup():void  
{ if (mode == 2 || 3 || 4 || 5)  
{ yplace = 0;  
if (killsetBox=false)  
{isSetBox = false;  
handstatus[id] = “idle”; }  
else  
{if (isSetBox ==true)  
{ this.visible = false;  
this.kanafield.visible = false;  
this.valuefield.visible = false;  
handstatus[id] = “not”;  
killsetBox = false; } } }}  
private var first:Boolean = true;  
private function kanachange(e:Set):void  
{ if (id==handstatus.indexOf(e.kanaex,0))  
{kana = e.kanaex;  
value = e.valueex;  
kanafield.text = kana;  
valuefield.text = String(value);  
playerhandkana[id] = e.kanaex;  
playerhandvalue[id] = e.valueex;}  
else  
{ kana = “”;  
value = 0;  
handstatus[id] = “not”;}}  
private function setonbox():void  
{addEventListener(Set.BOARD\_SET\_CHANGED, kanachange);  
if (mode==3)  
{isSetBox = true;  
this.x = 480;  
this.y = 448 - (yplace \* 32);  
handstatus[id] = “ret”;}  
else if (mode == 4)  
{ if (yplace == 0)  
{dispatchEvent(new Set(Set.BOX\_SET\_CHANGED, kana, 0));  
isSetBox = true;  
this.x = 480;  
this.y = 448 - (yplace \* 32);  
handstatus[id] = “rem”;} }  
else if (mode == 5)  
{ { isSetBox = true;  
this.x = 480;  
this.y = 448 - (yplace \* 32);}  
if (yplace == 0)  
{dispatchEvent(new Set(Set.BOX\_SET\_CHANGED, “kanji”, value)); }  
else if (yplace \> 0)  
{dispatchEvent(new Set(Set.BOX\_SET\_CHANGED, “k+”, value)); }  
yplace += 1; }}  
private function takeoffbox():void  
{ removeEventListener(Set.BOARD\_SET\_CHANGED, kanachange);  
isSetBox = false;  
if (mode == 3)  
{ handstatus[id] = “idle”;  
isSetBox=false}  
else if (mode ==4)  
{ if (yplace == 1)  
{dispatchEvent(new Set(Set.BOX\_SET\_CHANGED, kana, 1));  
isSetBox = false;  
handstatus[id] = “idle” }  
else if (mode == 5)  
{ if (yplace == 1)  
{dispatchEvent(new Set(Set.BOX\_SET\_CHANGED, “nokanji”, value)); }  
else if (yplace \> 1)  
{dispatchEvent(new Set(Set.BOX\_SET\_CHANGED, “k-”, value)); }}  
handstatus[id] = “idle”;  
yplace-= 1; }}  
private function goodX(inX:Number):Number  
{if (inX \< 0)  
{return 0;}  
if (inX \> (stage.stageWidth) )  
{return (stage.stageWidth);  
}return inX;}  
private function goodY(inY:Number):Number {  
if (inY \< 0)  
{return 0; }  
if (inY \> stage.stageHeight) {return stage.stageHeight;}  
return inY; }  
private function turn1():void  
{if (playerRound \> playernumber)  
{playerRound = 1;  
round += 1;  
} } }}
