flash on 2010-1-9
/**
* 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 = "変形は未実装です";
}
}
}