In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

flash on 2010-1-9

Get Adobe Flash player
by gryyy451 09 Jan 2010
    Embed
/**
 * Copyright gryyy451 ( http://wonderfl.net/user/gryyy451 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/tV46
 */

package {
	import flash.display.*;
	import flash.events.*;
    import flash.text.*;
	import flash.geom.*;
    import flash.net.*;
	
	import org.papervision3d.scenes.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.cameras.*;
    import org.papervision3d.materials.*;
    import org.papervision3d.core.proto.*;
	
	[SWF(width = "500", height = "500", backgroundColor = "#000000")]
	
	public class kadai2_6 extends Sprite {
		
		// ポリゴンの頂点。配列の要素数を増やすこともできます
		private var points:Array = [new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point()];
		private var pointIndex:int = 0;
		private var i:int = 0; //多角形描写用変数
		private var k:int = 0; //面積算出用変数
		private var s:int = 0; //多角形の面積
		private var myCircle:Sprite = new Sprite();
		
		//保存用変数
		private var pointx:Array = [new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point()]
		private var pointy:Array = [new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point(), new Point()]
		
        private var textField:TextField;//テキストフィールド
        private var so:SharedObject;    //SharedObject
		
		
		public function kadai2_6() {
			//マウスイベントの反応する領域(インスタンス)の作成
			var inRect:flash.display.Sprite = new Sprite(); //図形描写用のクラスinRect
			var btn:Sprite = new Sprite(); //ボタン用のクラスbtn
			
			inRect.graphics.lineStyle(0, 0x000000);
			inRect.graphics.beginFill(0x999999);
			inRect.graphics.drawRect(0, 19, 500, 500);
			inRect.graphics.endFill();

			
			addChild(inRect);
			
			//作成したインスタンスにイベントリスナーを指定
			inRect.addEventListener(MouseEvent.MOUSE_DOWN, pointCircle);
			inRect.addEventListener(MouseEvent.MOUSE_DOWN, edgePoint);
			inRect.addEventListener(MouseEvent.DOUBLE_CLICK, drawPolygon);
			inRect.doubleClickEnabled = true;
			
			
            //ボタンの追加
            addButton(btn, "  保存  ", writeHandler, 0,0);
            addButton(btn, "  読込  ", readHandler, 40, 0);
			addButton(btn, " 削除 ", dateClear, 80, 0);
			addButton(btn, " 面積 ", calculationSize, 120, 0);
			addButton(btn, "  変形  ", transformation, 160, 0);
									
			btn.graphics.lineStyle(0, 0x000000);
			btn.graphics.beginFill(0xffffff);
			btn.graphics.drawRect(200, 0, 300, 19);
			btn.graphics.endFill();
			
			addChild(btn);
			
            //SharedObjectの取得
            so=SharedObject.getLocal("SharedObjectEx");
 //           if (so.data.text != null) textField.text = so.data.text;   
			
            //テキストフィールドの追加
            textField=addTextField(btn,"クリックで頂点を指定 ダブルクリックで多角形を描写");
            textField.x=200;
            textField.y=0;
		}
		
		
		private function pointCircle(e:MouseEvent):void {  //クリックした場所に円を表示する
			myCircle.graphics.lineStyle(1, 0xffffff);
			myCircle.graphics.drawCircle(mouseX, mouseY, 1);
			addChild(myCircle);
		}
		
		private function drawPolygon(e:MouseEvent):void { //ダブルクリックで多角形の描写を開始
			var line:Sprite = new Sprite();
			if (pointIndex > 3) {
			line.graphics.lineStyle(3, 0xffffff);
			line.graphics.moveTo(points[0].x, points[0].y);
			
			for (i = 1; i < pointIndex; i++) {
			line.graphics.lineTo(points[i].x, points[i].y);
			}
			line.graphics.lineTo(points[0].x, points[0].y);
			
			addChild(line);
			pointIndex = 0;
			removeChild(myCircle); //円を削除
			return;
			}
		}
		
		
		private function edgePoint(e:MouseEvent):void { //クリックした位置を多角形の頂点として登録する
			// 点を打った場所を配列に保存する
			points[pointIndex].x = e.stageX
			points[pointIndex].y = e.stageY
			
			pointIndex++;
			return;
		}
		
        //ボタンの追加
        private function addButton(doc:DisplayObjectContainer,
            text:String,handler:Function,x:int,y:int):TextField {
            var button:TextField=new TextField();
            doc.addChild(button);
            button.text           =text;                  //テキスト
            button.autoSize       =TextFieldAutoSize.LEFT;//オートサイズ
            button.selectable     =false;                 //選択不可
            button.border         =true;                  //ボーダー
            button.background     =true;                  //背景色
            button.backgroundColor = 0xeeeeee;
            button.addEventListener(MouseEvent.CLICK,handler);
            button.x=x;
            button.y=y;
            return button;
        }
		
		
        //テキストフィールドの追加
        private function addTextField(doc:DisplayObjectContainer,
            text:String):TextField {
            var textField:TextField=new TextField();
            doc.addChild(textField);
            textField.width=300;
            textField.height=19;
            textField.text      =text;//テキスト
            textField.selectable=false;//選択可
            textField.border    =true;//ボーダー
            textField.type      =TextFieldType.INPUT;//入力
            return textField;
        }
		
		
        //書き込み
        private function writeHandler(e:MouseEvent):void {
            so.data.text=textField.text;
            so.flush();
			textField.text = "データを保存しました";
        }
        
        //読み込み
        private function readHandler(e:MouseEvent):void {
            if (so.data.text != null) {
				textField.text = so.data.text; //データの読み込み
				textField.text = "データを読み込みました";
			}
			else {
				textField.text = "データがありません";
			}
        }
		
		//削除
        private function dateClear(e:MouseEvent):void {
			if (so.data.text != null){
			so.clear();
			textField.text = "データを削除しました";
			}
			else {
				textField.text = "削除するデータがありません";
			}
        }
		//面積
		private function calculationSize(e:MouseEvent):void {
			textField.text = "面積算出は未実装です";
			for ( k=1; k<=pointIndex; k++)
			
		}
		
		//変形
		private function transformation(e:MouseEvent):void {
			textField.text = "変形は未実装です";
		}
		
	}
}