したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

スクリプト覚書

1ここな ◆noLKOKOKEo:2010/08/25(水) 00:08:26
超俺専用スクリプトコピペ

mX = 0;
mY = 0;
MOV = 0;
ROT = 1;
HIT = false;
PI = Math.PI;
PI_d = 0;

onEnterFrame = function(){

if(Key.isDown(38)){MOV += 0.1;}
if(Key.isDown(40)){MOV -= 0.1;}

if(Key.isDown(37)){ROT -= 3;}
if(Key.isDown(39)){ROT += 3;}

if(ROT < 1){ROT = 360;}
if(ROT > 361){ROT= 1;}

keisan();
dousa();
atari();

trace(MOV+"/"+mX+","+mY+" "+ROT+"/"+PI_d+" "+HIT);
HIT = false;
};

function keisan(){

PI_r = ROT * (Math.PI / 180);

mX = Math.floor(MOV * Math.sin(PI_r) * 10) / 10;
mY = Math.floor(MOV * Math.cos(PI_r) * 10) / 10;

}

function dousa(){

_root.test._x += mX;
_root.test._y -= mY;
_root.test._rotation = ROT;

}

function atari(){

if(_root.hani.hitTest(_root.test._x,_root.test._y,true)){
HIT = true;
PI_d =(PI_r * -1)/(Math.PI / 180);
ROT -= PI_d;

PI_d = 1;
}

}

角度反射が上手くいかん。やはりラジアン制御せなあかんのか。

36ここな ◆noLKOKOKEo:2010/11/09(火) 00:02:23
コースエディタの途中コード

Fe_width = 640;
Fe_heith = 720;

Line = 3;
Lh = Line/2;

H_id = 0;

_root.createEmptyMovieClip("field",10);

//フィールドの大きさを決める
function Fe_plane(){
field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);
}

Fe_plane();

trace(field._width);

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){

if(getTimer() - compTime < 300){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
H_id++;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
trace("H_ID: " + H_id);
}

compTime = getTimer();//以前の値を格納して前回と比較する

};

37ここな ◆noLKOKOKEo:2010/11/09(火) 00:03:50
足りないところ。

・クリップ追加時に自分のIDを斜め上に表示させる
・ドラッグして各クリップを移動できるようにする(forで毎フレーム監視??)

38ここな ◆noLKOKOKEo:2010/11/09(火) 13:09:00
ほぼ完了

Fe_width = 640;
Fe_heith = 720;

Line = 3;
Lh = Line/2;

H_id = 0;

_root.createEmptyMovieClip("field",10);

//フィールドの大きさを決める
function Fe_plane(){
field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);
}

Fe_plane();

trace(field._width);

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){

if(getTimer() - compTime < 200){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
H_id++;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
field.createTextField("H_tx" + H_id,500 + H_id,H_posX + 12,H_posY - 18,48,36);
field["H_tx" + H_id].text = "H" + H_id;
trace("H_ID: " + H_id);
}

compTime = getTimer();//以前の値を格納して前回と比較する

};

onEnterFrame = function(){

field.H_tx1._x = field.H1._x + 12;
field.H_tx1._y = field.H1._y - 18;

field.H1.onPress = function(){
field.H1.startDrag();
};

field.H1.onRelease = function(){
field.H1.stopDrag();
};

};

39ここな ◆noLKOKOKEo:2010/11/09(火) 13:11:15
次のステップ

1)for文ブン回して作られた全部のポイントを監視する。
2)書き込みボタンを設置
3)書き込みボタンを押したら、全ての位置情報を値として保存する

40ここな ◆noLKOKOKEo:2010/11/09(火) 23:51:29
途中。ドラッグ処理を舐めてた…orz

Fe_width = 640;
Fe_heith = 720;

Line = 3;
Lh = Line/2;

H_id = 0;

_root.createEmptyMovieClip("field",10);

//フィールドの大きさを決める
function Fe_plane(){
field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);
}

Fe_plane();

trace(field._width);

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){

if(getTimer() - compTime < 200){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
H_id++;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
field.createTextField("H_tx" + H_id,500 + H_id,H_posX + 12,H_posY - 18,48,36);
field["H_tx" + H_id].text = "H" + H_id;
trace("H_ID: " + H_id);
}

compTime = getTimer();//以前の値を格納して前回と比較する

};

onEnterFrame = function(){

field.onPress = function(){
_droptarget.startDrag();
};

field.onRelease = function(){
_droptarget.stopDrag();
};

};

function Tx_move(){

field["H_tx" + (Tx_num)]._x = field.H1._x + 12;
field["H_tx" + (Tx_num)]._y = field.H1._y - 18;

}

41ここな ◆noLKOKOKEo:2010/11/09(火) 23:55:27
多分eval関数で指定movieclip直下を監視して
_droptargetから帰ってくるムービークリップの値を取得。

その結果をifで判定して座標情報を受け取る、が正しい流れっぽい。
_droptargetはobjectみたいなもんなのかな。

42ここな ◆noLKOKOKEo:2010/11/10(水) 13:12:53
ドラッグ用のテスト。こんな感じだと個別に当たり判定を取り出せるらしい。

onEnterFrame = function(){

/*
Hit_score = _root.H0.hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){trace("H0");}

Hit_score = _root.H1.hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){trace("H1");}
*/

for(i= 0;i < 2;i++){
Hit_score = _root["H" + i].hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){H_name = "H"+i;}

}

trace(H_name);

};

43ここな ◆noLKOKOKEo:2010/11/10(水) 13:14:20
これにonMouseつければ十分だな。
_droptarget自体古いコードらしいし、こっちの方が無駄データ少なそうだな。

44ここな ◆noLKOKOKEo:2010/11/10(水) 22:12:25
テストスクリプト完成。

H_name = null;

onEnterFrame = function(){

for(i= 0;i < 2;i++){
Hit_score = _root["H" + i].hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){H_name = "H"+i;}
}

trace(H_name);

_root[H_name].onPress = function(){
this.startDrag();
};

_root[H_name].onRelease = function(){
this.stopDrag();
};

};

45ここな ◆noLKOKOKEo:2010/11/11(木) 06:55:14
完成。とりあえずあとでライン描画を追加してみる。

Fe_width = 640;
Fe_heith = 720;

Line = 3;
Lh = Line/2;

H_id = 0;
H_name = null;

_root.createEmptyMovieClip("field",10);

//フィールドの大きさを決める
function Fe_plane(){
field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);
}

Fe_plane();

trace(field._width);

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){

if(getTimer() - compTime < 200){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
field.createTextField("H_tx" + H_id,500 + H_id,H_posX + 12,H_posY - 18,48,36);
field["H_tx" + H_id].text = "H" + H_id;
trace("H_ID: " + H_id);
H_id++;
}

compTime = getTimer();//以前の値を格納して前回と比較する

};

onEnterFrame = function(){

for(i= 0;i < H_id;i++){
Hit_score = field["H" + i].hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){
H_name = "H"+i;
Htx_name = "H_tx" + i;
}
}

field[H_name].onPress = function(){
this.startDrag();
};

field[H_name].onRelease = function(){
this.stopDrag();
};

field[Htx_name]._x = field[H_name]._x + 12;
field[Htx_name]._y = field[H_name]._y - 18;

};

46ここな ◆noLKOKOKEo:2010/11/11(木) 10:04:27
仕様変更メモ:

1)座標データをベタもち。
2)IDは都度振りなおせるように更新ボタンを追加
3)コースデータは座標データだけをもったベタデータを用いる
4)選択時にダブルクリックでポイントを消去
5)選択されたところにフォーカスをあてる

47ここな ◆noLKOKOKEo:2010/11/11(木) 10:05:45
なので座標データにはポイントIDをもたないし、付加データは全部削除
更にライン描画の指示方法も見なおし

48ここな ◆noLKOKOKEo:2010/11/11(木) 13:09:30
ライン描画の途中

Fe_width = 640;
Fe_heith = 720;

Line = 3;
Lh = Line/2;

H_id = 0;
H_name = null;

_root.createEmptyMovieClip("field",10);

//フィールドの大きさを決める
function Fe_plane(){

field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);

}

Fe_plane();

//trace(field._width);

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){

if(getTimer() - compTime < 200){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
field.createTextField("H_tx" + H_id,500 + H_id,H_posX + 12,H_posY - 18,48,36);
field["H_tx" + H_id].text = "H" + H_id;
// trace("H_ID: " + H_id);
H_id++;
}

compTime = getTimer();//以前の値を格納して前回と比較する

};

//ポイントの編集
onEnterFrame = function(){

for(i= 0;i < H_id;i++){
Hit_score = field["H" + i].hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){
H_name = "H"+i;
Htx_name = "H_tx" + i;
}
}

field[H_name].onPress = function(){
this.startDrag();
};

field[H_name].onRelease = function(){
this.stopDrag();
};

field[Htx_name]._x = field[H_name]._x + 12;
field[Htx_name]._y = field[H_name]._y - 18;

Rend_ln();

};

ポイントをラインで描画
function Rend_ln(){
_root.clear();
_root.lineStyle(3,0x0000FF);
for(i = 0;i < H_id;i++){
if(i == 0){
_root.moveTo(field.H0._x,field.H0._y);
}
else if(i == H_id){
_root.lineTo(field.H0._x,field.H0._y);
}
else{
_root.lineTo(field["H"+i]._x,field["H"+i]._y);
}
//trace(i);
}
}

49ここな ◆noLKOKOKEo:2010/11/11(木) 23:37:19
ライン描画完了

Fe_width = 800;
Fe_heith = 600;

Line = 3;
Lh = Line/2;

H_id = 0;
H_name = null;

_root.createEmptyMovieClip("field",10);
_root.createTextField("test",200,20,20,18,36);

//フィールドの大きさを決める
function Fe_plane(){
field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);
}

Fe_plane();

//trace(field._width);

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){
if(getTimer() - compTime < 200){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
field.createTextField("H_tx" + H_id,500 + H_id,H_posX + 9,H_posY - 12,32,24);
field["H_tx" + H_id].text = "H" + H_id;
// trace("H_ID: " + H_id);
H_id++;
}
compTime = getTimer();//以前の値を格納して前回と比較する
};

//ポイントの編集
onEnterFrame = function(){

test.text = SQ_id;

for(i= 0;i < H_id;i++){
Hit_score = field["H" + i].hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){
H_name = "H"+i;
Htx_name = "H_tx" + i;
}
}

field[H_name].onPress = function(){
this.startDrag();
};

field[H_name].onRelease = function(){
this.stopDrag();
};

field[Htx_name]._x = field[H_name]._x + 9;
field[Htx_name]._y = field[H_name]._y - 12;

Rend_ln();
};

ポイントをラインで描画
function Rend_ln(){
_root.clear();
_root.lineStyle(3,0x0000FF);

SQ_id = H_id-2;

for(i = 0;i < SQ_id;i++){
_root.moveTo(field["H"+i]._x,field["H"+i]._y);
_root.lineTo(field["H"+(i+1)]._x,field["H"+(i+1)]._y);
_root.lineTo(field["H"+(i+3)]._x,field["H"+(i+3)]._y);
_root.lineTo(field["H"+(i+2)]._x,field["H"+(i+2)]._y);
_root.moveTo(field["H"+i]._x,field["H"+i]._y);
}
}

50ここな ◆noLKOKOKEo:2010/11/13(土) 14:01:33
細かいこと考えなければこれで完成。
足りないのはロード機能と編集ポイント抽出して座標のポイント更新することくらい。
自分で使うのにアレコレいれるのもめんど(ry

Fe_width = 800;
Fe_heith = 600;

Line = 3;
Lh = Line/2;

H_id = 0;
H_name = null;

//描画準備
function initDATA(){
Rend_btn._x = Stage.width - 100;
Rend_btn._y = Stage.height - 40;
_root.createEmptyMovieClip("field",10);
_root.createTextField("test",300,20,20,18,36);
_root.createTextField("Rend_data",410,20,600,600,200);
Rend_data.selectable = true;
Rend_data.autoSize = true;

}

//フィールドの大きさを決める
function Fe_plane(){
field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);
}

//ポイントをラインで描画
function Rend_ln(){
_root.clear();
_root.lineStyle(3,0x0000FF);

SQ_id = H_id-2;

for(i = 0;i < SQ_id;i++){
_root.moveTo(field["H"+i]._x,field["H"+i]._y);
_root.lineTo(field["H"+(i+1)]._x,field["H"+(i+1)]._y);
_root.lineTo(field["H"+(i+3)]._x,field["H"+(i+3)]._y);
_root.lineTo(field["H"+(i+2)]._x,field["H"+(i+2)]._y);
_root.moveTo(field["H"+i]._x,field["H"+i]._y);
}
}

initDATA();
Fe_plane();

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){
if(getTimer() - compTime < 200){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
field.createTextField("H_tx" + H_id,200 + H_id,H_posX + 9,H_posY - 12,32,24);
field["H_tx" + H_id].selectable = false;
field["H_tx" + H_id].text = "H" + H_id;

H_id++;
}
compTime = getTimer();//以前の値を格納して前回と比較する
};

次へ続く

51ここな ◆noLKOKOKEo:2010/11/13(土) 14:02:11
//ポイントの編集
onEnterFrame = function(){

Rnd_posi = "";
test.text = SQ_id;

for(i= 0;i < H_id;i++){
Rnd_posi += "[" + field["H" + i]._x +","+ field["H" + i]._y +"] \n";
Hit_score = field["H" + i].hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){
H_name = "H"+i;
Htx_name = "H_tx" + i;
}

Rend_data.text = Rnd_posi;
}

field[H_name].onPress = function(){
this.startDrag();
};

field[H_name].onRelease = function(){
this.stopDrag();
};

field[Htx_name]._x = field[H_name]._x + 9;
field[Htx_name]._y = field[H_name]._y - 12;

Rend_ln();
};

//クリップボードへコピー
Rend_btn.onPress = function(){
System.setClipboard(Rnd_posi);
};

52ここな ◆noLKOKOKEo:2010/11/13(土) 14:37:05
次やること。

1)こいつに自動的に角度計算をさせて、別データとして吐き出せるようにする。
2)吐き出されたデータを正規のコースデータの形式に直すためのスクリプトを作成
3)コースデータを外部テキスト化する

53ここな ◆noLKOKOKEo:2010/11/16(火) 07:00:34
完成形。初期設定

Fe_width = 800;
Fe_heith = 600;

Line = 3;
Lh = Line/2;

H_id = 0;
H_name = null;
Rend_DAT = "";

Rnd_posi = new Array();

54ここな ◆noLKOKOKEo:2010/11/16(火) 07:01:04

//描画準備
function initDATA(){
Rend_btn._x = Stage.width - 100;
Rend_btn._y = Stage.height - 40;
_root.createEmptyMovieClip("field",10);
_root.createTextField("test",300,20,20,18,36);
_root.createTextField("Rend_data",410,20,600,600,200);
Rend_data.selectable = true;
Rend_data.mouseWheelEnabled = true;

}

//フィールドの大きさを決める
function Fe_plane(){
field.lineStyle(Line,0x0000FF);
field.moveTo( 0 + Lh, 0 + Lh);
field.lineTo(Fe_width - Lh, 0 + Lh);
field.lineTo(Fe_width - Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh,Fe_heith - Lh);
field.lineTo( 0 + Lh, 0 + Lh);
}

//ポイントをラインで描画
function Rend_ln(){
_root.clear();
_root.lineStyle(3,0x0000FF);

SQ_id = H_id-2;

for(i = 0;i < SQ_id;i++){
_root.moveTo(field["H"+i]._x,field["H"+i]._y);
_root.lineTo(field["H"+(i+1)]._x,field["H"+(i+1)]._y);
_root.lineTo(field["H"+(i+3)]._x,field["H"+(i+3)]._y);
_root.lineTo(field["H"+(i+2)]._x,field["H"+(i+2)]._y);
_root.moveTo(field["H"+i]._x,field["H"+i]._y);
}
}

initDATA();
Fe_plane();

//ダブルクリックでアイコン追加
_root.onMouseDown = function(){
if(getTimer() - compTime < 200){
H_posX = _root._xmouse;
H_posY = _root._ymouse;
field.attachMovie("H_handle","H"+ H_id, 100 + H_id );
Rnd_posi.push([H_posX,H_posY]);//配列追加
field["H" + H_id]._x = H_posX;
field["H" + H_id]._y = H_posY;
field.createTextField("H_tx" + H_id,200 + H_id,H_posX + 9,H_posY - 12,32,24);
field["H_tx" + H_id].selectable = false;
field["H_tx" + H_id].text = "H" + H_id;

H_id++;
}
compTime = getTimer();//以前の値を格納して前回と比較する
};

//ポイントの編集
onEnterFrame = function(){

Rend_DAT = "";
test.text = SQ_id;

for(i= 0;i < H_id;i++){
Rnd_posi[i][0] = field["H" + i]._x;
Rnd_posi[i][1] = field["H" + i]._y;
Hit_score = field["H" + i].hitTest(_root._xmouse,_root._ymouse,true);
if(Hit_score == true){ //ドラッグ対象を探す
H_name = "H"+i;
Htx_name = "H_tx" + i;
}
if((i%2) == 0){ //偶数のときにテキスト更新
Rend_DAT += "[" + Rnd_posi[i][0] +","+ Rnd_posi[i][1] +","+ Rnd_posi[i+1][0] +","+ Rnd_posi[i+1][1] +"] \n";
}
}

field[H_name].onPress = function(){
this.startDrag();
};

field[H_name].onRelease = function(){
this.stopDrag();
};

field[Htx_name]._x = field[H_name]._x + 9;
field[Htx_name]._y = field[H_name]._y - 12;

Rend_data.text = Rend_DAT;
Rend_ln();
};

//クリップボードへコピー
Rend_btn.onPress = function(){
System.setClipboard(Rend_DAT);
};

55ここな ◆noLKOKOKEo:2010/11/16(火) 13:11:45
反射テスト用スクリプト。やることはコメント記載。

SC = new Array();
SC[0] = [40,280,160];
//3つの値を入れるだけ

SC_rot = new Array();
//各面の反射参照用角度を指定

function HIT_sc(){
_root.createEmptyMovieClip("HIT_ln",200);
//for分でぶんまわす
HIT_ln.beginFill(0x0000FF);
HIT_ln.moveTo(SC[0][0],SC[0][0]);
HIT_ln.lineTo(SC[0][1],SC[0][0]);
HIT_ln.lineTo(SC[0][1],SC[0][2]);
HIT_ln.lineTo(SC[0][0],SC[0][2]);
HIT_ln.endFill();

}

HIT_sc();
//自動で動く矢印を作成

56ここな ◆noLKOKOKEo:2010/11/17(水) 00:31:04
にゅーあたりはんてーテストできたお!

my_SPD = 2;
ROT = 0;

PI = Math.PI;

SC = new Array();
SC[0] = [ 20,280,160, 40];
SC[1] = [300,300, 20,280];
SC[2] = [160,280,300, 40];
SC[3] = [ 20, 40,300, 20];

SC_rot = [90,180,270,0];

SC_color = [0x0000FF,0xFF0000,0x009900,0xFF00FF];

SC_MAX = SC.length;

testINIT();

onEnterFrame = function(){
my_MOVE();
MAIN();

HIT_sc();
trace(HIT_cash + " tr:" + HIT_tr);
};

function testINIT(){
FD_make();

_root.attachMovie("my_mc_M","my_mc",20);
my_mc._x = 160;
my_mc._y = 160;
}

function MAIN(){

if(HIT_tr == 0){ROT = HIT_cash;}

if(keyL & Key.isDown(37)){ROT -= 3;}
if(keyR & Key.isDown(39)){ROT += 3;}

keyL = Key.isDown(37);
keyR = Key.isDown(39);

if(ROT > 359){ROT = 0;}
}

function FD_make(){

for(i=0;i < SC_MAX;i++){
_root.createEmptyMovieClip("HIT_ln"+i,0+i);
_root["HIT_ln"+i].beginFill(SC_color[i]);
_root["HIT_ln"+i].moveTo(SC[i][3],SC[i][0]);
_root["HIT_ln"+i].lineTo(SC[i][1],SC[i][0]);
_root["HIT_ln"+i].lineTo(SC[i][1],SC[i][2]);
_root["HIT_ln"+i].lineTo(SC[i][3],SC[i][2]);
_root["HIT_ln"+i].endFill();
}
}

function my_MOVE(){
PI_r = ROT * (PI / 180);
myX = Math.floor(my_SPD * Math.sin(PI_r) * 10) / 10;
myY = Math.floor(my_SPD * Math.cos(PI_r) * 10) / 10;
my_mc._x += myX;
my_mc._y -= myY;
my_mc._rotation = ROT;
}

function HIT_sc(){

if(HIT_tr != 0){HIT_cash = HIT_tr;}
HIT_tr = 0;

for(i=0;i < SC_MAX;i++){
HIT_score = _root["HIT_ln"+i].hitTest(my_mc._x,my_mc._y,true);
if(HIT_score == true){HIT_tr = SC_rot[i] +30;}
}

}

57ここな ◆noLKOKOKEo:2010/11/18(木) 00:10:40
うーん、hittestでもあまりよい結果は得られないみたいだなあ…
内側と外側にコリジョン持たせようと思うと割を左右で割っておかないと有効じゃないけど
コースのコリジョンとしてはちょっと使いづらいよなあ…

だとすると

1)hitTestで角度をキャッシュ
2)内積を使って該当線分と接触時に自機の角度を強制的に変える

がベストなのかなあ( ゚Д゚)…

58ここな ◆noLKOKOKEo:2010/11/18(木) 22:38:22
内積を算出するサンプルかんせーい

createTextField("test_tx",20,160,280,0,0);
test_tx.autoSize = "center";

createTextField("tx_pos0",30,0,0,32,32);
createTextField("tx_pos1",31,0,0,32,32);
tx_pos0.text = "pos0";
tx_pos1.text = "pos1";

my_mc.onPress = function(){
my_mc.startDrag();
};

my_mc.onRelease = function(){
my_mc.stopDrag();
};

onEnterFrame = function(){

for(i=0;i<2;i++){

_root["tx_pos"+i]._x = _root["mc_pos"+i]._x + 8;
_root["tx_pos"+i]._y = _root["mc_pos"+i]._y - 10;

Dr_test = _root["mc_pos"+i].hitTest(_root._xmouse,_root._ymouse,true);
if(Dr_test == true){
_Dr_POS = "mc_pos" + i;
}
}

_root[_Dr_POS].onPress = function(){
this.startDrag();
};

_root[_Dr_POS].onRelease = function(){
this.stopDrag();
};


keisan();

test_tx.text = vec_num;

};

function keisan(){

//数値の更新
px = my_mc._x;
py = my_mc._y;
//ポイントa
ax = mc_pos0._x;
ay = mc_pos0._y;
//ポイントb(注:ポイントa < b)
bx = mc_pos1._x;
by = mc_pos1._y;

//線分abのベクトル
v1_x = bx - ax;
v1_y = by - ay;

//線分abと垂直のベクトル
tmp = v1_x;
v1_x = -v1_y;
v1_y = tmp;

//ポイントaからのベクトル
v2_x = px - ax;
v2_y = py - ay;

//線分abから見た内積
vec_num = v1_x * v2_x + v1_y * v2_y;

}

59ここな@携帯:2010/11/18(木) 23:03:09
ピコーン!(゚Д゚)

そうか!今の頂点数でも三角割りにすれば面の数増やせるじゃないか

(゚Д゚)…あしたやろう

60ここな ◆noLKOKOKEo:2010/11/19(金) 12:59:51
変更点のみ記載。

ライン成型部分。

//ポイントをラインで描画
function Rend_ln(){
_root.clear();
_root.lineStyle(3,0x0000FF);

SQ_id = H_id-2;

for(i = 0;i < SQ_id;i++){
_root.moveTo(field["H"+i]._x,field["H"+i]._y);
_root.lineTo(field["H"+(i+1)]._x,field["H"+(i+1)]._y);
_root.lineTo(field["H"+(i+2)]._x,field["H"+(i+2)]._y);
_root.lineTo(field["H"+i]._x,field["H"+i]._y);
}
}

ログ抽出部分。

Rend_DAT += "[" + Rnd_posi[i][0] +","+ Rnd_posi[i][1] +","+ Rnd_posi[i+1][0] +"] \n";

これで三角化の完成。あとは角度付けておけば(゚Д゚)おk

61ここな ◆noLKOKOKEo:2010/11/25(木) 13:03:44
以前の壁テストのサンプルに地形効果エフェクト計算を追加中。
ドリフトの計算を外に出してなかったので、分離することに。

全部は掲載できないので、追加分だけ記載。

/*---------------------------
地形効果エフェクト
一フレーム前の速度をキャッシュ
それを元にして1フレーム辺りの
すべり量を計算して値を吐き出す
----------------------------*/
function Gru_eff(){

/*
//参考用
AcsUP= Brk_1;
if(ROT_tm < TT){
ROT += Cub_1;
ROT_tm ++;
}
else{
MOV -= Brk_2;
if(ROT_MAX > ROT_MIN){ROT_MAX -= Cub_2;}
ROT += ROT_MAX;
if(ROT_Df < (ROT_DfMAX * 1)){ROT_Df += ROT_Dfmin;}
}
*/
}

//最終座標計算
function my_MOVE(){
PI_r = ROT * (PI / 180);
myX = Math.floor(my_SPD * Math.sin(PI_r) * 10) / 10;
myY = Math.floor(my_SPD * Math.cos(PI_r) * 10) / 10;
Gru_posX = 0;//地形効果エフェクト座標X
Gru_posY = 0;//地形効果エフェクト座標Y
my_mc._x += myX + Gru_posX;
my_mc._y -= myY + Gru_posY;
my_mc._rotation = ROT;
}

62ここな ◆noLKOKOKEo:2010/11/26(金) 13:06:20
とりあえずステアON時間をとってみることに。
方向付けと回転に対しての影響が中途半端な感じ。

/*---------------------------
地形効果エフェクト
※方向付けが出来てない
----------------------------*/
function Gru_eff(){

if(TT_trg == true){
if(TT < 60){TT++;}
else{TT = 60;}
}
else{
if(TT > 0){TT--;}
else{TT = 0;}
}

/*
//参考用
AcsUP= Brk_1;
if(ROT_tm < TT){
ROT += Cub_1;
ROT_tm ++;
}
else{
MOV -= Brk_2;
if(ROT_MAX > ROT_MIN){ROT_MAX -= Cub_2;}
ROT += ROT_MAX;
if(ROT_Df < (ROT_DfMAX * 1)){ROT_Df += ROT_Dfmin;}
}
*/
}

function my_MOVE(){
PI_r = (ROT + Gru_rot) * (PI / 180);
myX = Math.floor(my_SPD * Math.sin(PI_r) * 10) / 10;
myY = Math.floor(my_SPD * Math.cos(PI_r) * 10) / 10;
Gru_posX = TT / 100;//地形効果エフェクト座標X(方向がまだ)
Gru_posY = TT / 100;//地形効果エフェクト座標Y(方向がまだ)
Gru_rot = TT / 2;
my_mc._x += myX + Gru_posX;
my_mc._y -= myY + Gru_posY;
my_mc._rotation = ROT;
}

63ここな ◆noLKOKOKEo:2010/11/30(火) 13:33:00
うーん、地形効果じゃないな。
よく考えたらベクトルエネルギーを常時蓄積>開放をしていれば
嫌でもドリフトできるじゃないの(゚Д゚)

64ここな ◆noLKOKOKEo:2010/11/30(火) 20:26:45
my_SPD = 2;
ROT = 0;
BLK = 0;
Gru_tm = 0;
Gru_trg = false;

PI = Math.PI;

中略

testINIT();

onEnterFrame = function(){
my_MOVE();
MAIN();
HIT_sc();
Gru_eff();
};

function testINIT(){

FD_make();
_root.attachMovie("my_mc_M","my_mc",20);
my_mc._x = 160;
my_mc._y = 160;

}

function MAIN(){

if(HIT_tr == 0){
ROT = HIT_cash;my_SPD = 2;Gru_tm = 0;
}

if(my_SPD < 8){
if(Gru_trg == false){my_SPD += 0.05;}
}
else{my_SPD = 8;}

if(keyL & Key.isDown(37)) {ROT -= 6;Gru_trg = true;}
if(keyL & !Key.isDown(37)){Gru_trg = false;}
if(keyR & Key.isDown(39)) {ROT += 6;Gru_trg = true;}
if(keyR & !Key.isDown(39)){Gru_trg = false;}

//ブレーキ処理
if(keyB & Key.isDown(40)) {my_SPD = 0;Gru_trg = true;}
if(keyB & !Key.isDown(40)){Gru_trg = false;}

keyL = Key.isDown(37);
keyR = Key.isDown(39);
keyB = Key.isDown(40);

if(ROT > 359){ROT = 0;}
}

/*---------------------------
方向エネルギーの蓄積
----------------------------*/
function Gru_eff(){

if(Gru_trg == false){

Gru_tm = 50;
Gru_vecX = myX;//X移動をキャッシュ
Gru_vecY = myY;//Y移動をキャッシュ
}
else{Gru_tm--;}

//移動の力を徐々に放出
if(Gru_tm > 0){
Gru_posX = Gru_vecX;
Gru_posY = Gru_vecY;
}
else{
Gru_posX = 0;
Gru_posY = 0;
}
}

中略

//最終座標計算
function my_MOVE(){
PIr = ROT * (PI / 180);
my_SPD = my_SPD - BLK;
myX = Math.floor(my_SPD * Math.sin(PIr) * 10) / 10;
myY = Math.floor(my_SPD * Math.cos(PIr) * 10) / 10;
my_mc._x += myX + Gru_posX;
my_mc._y -= myY + Gru_posY;
my_mc._rotation = ROT;
}

以下省略

65ここな ◆noLKOKOKEo:2010/12/01(水) 23:16:22
完成。
主要部分をうp

my_SPD = 0.1;
MAX_SPD = 2.0;
ROT = 0;
BLK = 0;
Gru_tm = 0;
Gru_trg = false;

中略

function MAIN(){

if(HIT_tr == 0){
ROT = HIT_cash;my_SPD = 0.7;Gru_tm = 0;
}

if(my_SPD < MAX_SPD){
if(Gru_trg == false){my_SPD += 0.05;}
}
else{my_SPD = MAX_SPD;}

if(keyL & Key.isDown(37)) {
if(my_SPD > 0){
ROT -= 6;
my_SPD -= my_SPD/120;
}
Gru_trg = true;
}
if(keyL & !Key.isDown(37)){Gru_trg = false;}
if(keyR & Key.isDown(39)) {
if(my_SPD > 0){
my_SPD -= my_SPD/120;
ROT += 6;
}
Gru_trg = true;
}
if(keyR & !Key.isDown(39)){Gru_trg = false;}

//ブレーキ処理
if(keyB & Key.isDown(40)) {
if(my_SPD > 0){my_SPD -= 0.05;}
else{my_SPD = 0;}
Gru_trg = true;
}
if(keyB & !Key.isDown(40)){Gru_trg = false;}

keyL = Key.isDown(37);
keyR = Key.isDown(39);
keyB = Key.isDown(40);

if(ROT > 359){ROT = 0;}
}

/*---------------------------
方向エネルギーの蓄積
----------------------------*/
function Gru_eff(){
if(Gru_trg == false){
Gru_tm = my_SPD * 10;
Gru_vecX = myX;//X移動をキャッシュ
Gru_vecY = myY;//Y移動をキャッシュ
}
else{Gru_tm--;}

//移動の力を徐々に放出
if(Gru_tm > 0){
Gru_posX = Gru_vecX * my_SPD;
Gru_posY = Gru_vecY * my_SPD;
Gru_rot = my_SPD;
}
else{
Gru_posX = 0;
Gru_posY = 0;
}
}

中略

//最終座標計算
function my_MOVE(){
PIr = ROT * (PI / 180);
my_SPD = my_SPD - BLK;
myX = Math.floor(my_SPD * Math.sin(PIr) * 10) / 10;
myY = Math.floor(my_SPD * Math.cos(PIr) * 10) / 10;
my_mc._x += myX + Gru_posX;
my_mc._y -= myY + Gru_posY;
my_mc._rotation = ROT + Gru_rot;
}

以下省略

66ここな ◆noLKOKOKEo:2010/12/13(月) 17:59:33
メインフレームつくり途中

this.createEmptyMovieClip("REND_1",20);
this.createEmptyMovieClip("REND_2",25);
REND_1.loadMovie("testOPanm.swf");

this.loadVariables("testOPanm.swf");
this.loadVariables("testOPmov.swf");

onEnterFrame = function(){

if(anmEND == true){REND_2.loadMovie("testOPmov.swf");}

trace(anmEND+" "+anmMOV_END);
};

別swfからうまく値を引っ張れてこれてない。

67ここな ◆noLKOKOKEo:2010/12/14(火) 19:38:16
改良版。まだとちゅう。

anmEND = false;
this.createEmptyMovieClip("REND_1",20);
this.createEmptyMovieClip("REND_2",25);


if(anmEND == false){
anmEND = REND_1.anmEND;
REND_1.loadMovie("testOPanm.swf");
trace(anmEND+" "+anmMOV_END);
}
else{
anmEND = REND_1.anmEND;
unloadMovie(REND_1);
REND_2.loadMovie("testOPmov.swf");
trace(anmEND+" "+anmMOV_END);
}

/*
onEnterFrame = function(){


};

68ここな ◆noLKOKOKEo:2010/12/15(水) 14:02:02
とりあえず完成。
でもonEnterframeを幾つも使うのはなんか嫌なので別方法を考え中。

this.createEmptyMovieClip("REND_1",20);
this.createEmptyMovieClip("REND_2",25);

REND_1.loadMovie("testOPanm.swf");


/*
loader = new MovieClipLoader();
loader.loadClip("testOPmov.swf" , REND_2);

loader.unloadClip();
*/


onEnterFrame = function(){
trace(anmEND +" "+ anmMOV_END);


if(anmEND == true){
REND_1.unloadMovie();
REND_2.loadMovie("testOPmov.swf");
}

if(anmMOV_END == true){
REND_2.unloadMovie();
}

anmEND = REND_1.anmEND;
anmMOV_END = REND_2.anmMOV_END;
};

69ここな ◆noLKOKOKEo:2010/12/17(金) 14:19:23
完成。
でも時間で測定できない場合はどうやって遷移しようかね。

this.createEmptyMovieClip("REND_1",20);
this.createEmptyMovieClip("REND_2",25);

/*------------------------
初期設定
-------------------------*/
function mainINI(){

REND_1.loadMovie("testOPanm.swf");

setTimeout(RndSC1,11000);//onEnterFrameの場合はいらない

}

/*------------------------
onEnterFrameを使った場合
------------------------*/
/*
onEnterFrame = function(){

RndSC1();
RndSC2();

trace(anmEND +" "+ anmMOV_END);
anmEND = REND_1.anmEND;
anmMOV_END = REND_2.anmMOV_END;

};
*/

/*-------------------------
それぞれの処理
--------------------------*/
function RndSC1(){

anmEND = REND_1.anmEND;

if(anmEND == true){
REND_1.unloadMovie();
REND_2.loadMovie("testOPmov.swf");
}

trace(anmEND +" "+ anmMOV_END);
setTimeout(RndSC2,11000);

}

function RendSC2(){

anmMOV_END = REND_2.anmMOV_END;

if(anmMOV_END == true){
REND_2.unloadMovie();
}

trace(anmEND +" "+ anmMOV_END);

}

mainINI();

70ここな ◆noLKOKOKEo:2010/12/20(月) 15:19:08
タイトルメニューからモード開始までの遷移完成。

//初期化処理

/*------------------------
初期設定
-------------------------*/
this.createEmptyMovieClip("REND_1",20);
this.createEmptyMovieClip("REND_2",25);

function mainINI(){

REND_1.loadMovie("testOPanm.swf");

setTimeout(RndSC1,11300);

}

/*-------------------------
タイトル初期化
--------------------------*/
function titleINI(){

POScs = 0;
stENT = false;

this.createEmptyMovieClip("REND_3",25);
REND_3.createTextField("MOVcs",40,136,100,64,16);
REND_3.createTextField("modeA",30,150,100,64,16);
REND_3.createTextField("modeB",31,150,116,64,16);
REND_3.createTextField("modeC",32,150,132,64,16);

REND_3.MOVcs.text = (">");
REND_3.modeA.text = ("MODE_0");
REND_3.modeB.text = ("MODE_1");
REND_3.modeC.text = ("MODE_2");

this.onEnterFrame = RndTL;

}

/*-------------------------
モード初期化
--------------------------*/
function stdmINI(){

this.createEmptyMovieClip("REND_4",50);

txFMT = new TextFormat();
txFMT.Color = 0x0000FF;
txFMT.size = 72;
txFMT.font = "_ゴシック";
txFMT.align = "center";

REND_4.createTextField("stdmTX",60,0,80,320,72);

REND_4.stdmTX.text = (stWORD);
REND_4.stdmTX.setTextFormat(txFMT);
}

//初期化処理ここまで

71ここな ◆noLKOKOKEo:2010/12/20(月) 15:19:41
続き。動作部分。

//動作指示ここから

/*-------------------------
シーケンスロゴ
--------------------------*/
function RndSC1(){

if(REND_1.anmEND == true){
REND_1.unloadMovie();
REND_2.loadMovie("testOPmov.swf");
}

setTimeout(RndSC2,11300);

trace(REND_1.anmEND +" "+ REND_2.anmMOV_END);

}

function RndSC2(){

if(REND_2.anmMOV_END == true){
REND_2.unloadMovie();
}

titleINI();

}

/*-------------------------
タイトルメニュー
--------------------------*/
function RndTL(){

if(key_ENT & !Key.isDown(13)){
delete this.onEnterFrame;
REND_3.unloadMovie();
stdmINI();
}

REND_3.MOVcs._y = 100 + POScs * 16;
stWORD = "MODE_" + POScs;

if(key_UP & !Key.isDown(38)){POScs--;}
if(POScs > 2){POScs = 0;}
if(key_DN & !Key.isDown(40)){POScs++;}
if(POScs < 0){POScs = 2;}

key_ENT = Key.isDown(13);
key_UP = Key.isDown(38);
key_DN = Key.isDown(40);

trace(stWORD);

}

mainINI();//処理の開始

72ここな ◆noLKOKOKEo:2010/12/21(火) 18:38:16
ついっとバックアップ新バージョン。

/*--------------------------
初期設定
---------------------------*/
read_xml ="";
fix_word ="";
txt_Lock= false;
file_num = "./101220_tweet.xml";
//file_num = "./tweet0.xml";//試験用

function stINI(){
_root.createTextField("lodstat",50, 1, 34, 181, 420);

cmv_xml = new XML();
cmv_xml.ignoreWhite = true;
//System.useCodepage = true;

_topANM.gotoAndPlay(2);
_lodANM.gotoAndPlay(2);
_btmANM.gotoAndPlay(1);
_crkANM.gotoAndPlay(1);

setTimeout(loadXML,3000);
}

function loadXML(){
cmv_xml.load(file_num);
}

stINI();

cmv_xml.onLoad = function(check){

// trace(cmv_xml.status);
// trace(cmv_xml.toString());//試験用

MAX_node = cmv_xml.childNodes[0].childNodes[0].childNodes;
MAX_leng = MAX_node.length;
REC_node = cmv_xml.childNodes[0].childNodes[0];

// trace(MAX_leng);

_topANM.gotoAndPlay(1);
_lodANM.gotoAndPlay(1);
_btmANM.gotoAndPlay(2);
_crkANM.gotoAndPlay(2);
txt_INIT();

};

73ここな ◆noLKOKOKEo:2010/12/21(火) 18:42:39
続き。なぜだかイベント部分が書き込めないので中略

/*------------------------
テキスト描画
------------------------*/
function txt_INIT(){

lodstat.border = true;
lodstat.borderColor = 0xAA0000;
lodstat.textColor = 0x555577;
lodstat.wordWrap = true;
lodstat.html = true;
lodstat.mouseWheelEnabled = true;
lodstat.selectable = false;

xml_view();

}

function xml_view(){

crt_word();

lodstat.htmlText = fix_word;
txt_Lock = true;

}

function crt_word(){

// trace("word " + REC_node.childNodes[0].childNodes[4].firstChild.nodeValue);//試験用

txt_Lock = false;
for(i = 1;i < MAX_leng;i ++){

//各ワードの形成
status_url =
" statusID: <FONT size='12' color='#0000FF'><A href='" + REC_node.childNodes[i].childNodes[4].firstChild.nodeValue +"'>"
+ REC_node.childNodes[i].childNodes[0].firstChild.nodeValue + "</A></FONT>";
text =
"<FONT color='#000000' face='MS ゴシック' size='10'>"+ REC_node.childNodes[i].childNodes[3].firstChild.nodeValue + "</FONT>";
created_at =
"<FONT size='9'><U>tweet at:" + REC_node.childNodes[i].childNodes[2].firstChild.nodeValue + "</U></FONT>";

//最終出力の形成
fix_word += created_at + "\n" + text + status_url + "\n";

}
}

74ここな ◆noLKOKOKEo:2010/12/22(水) 16:36:26
全工程多分終了。

/*--------------------------
初期設定
---------------------------*/
file_mon = 12;
file_yar = 2010;
//file_scn = "./tweet0.xml";//試験用

function stINI(){
_root.createTextField("lodstat",50, 1, 34,181,420);
_root.createTextField("nowlook",60, 22,454,140, 24);
_root.createTextField("_navi_A",70, 0,458, 22, 24);
_root.createTextField("_navi_B",75,163,458, 22, 24);

_navi_A.textColor = 0xFFFFFF;
_navi_A.html = true;
_navi_A.selectable= false;
_navi_A.htmlText =
"<FONT face='_ゴシック' size='16'>前</FONT>";

_navi_B.textColor = 0xFFFFFF;
_navi_B.html = true;
_navi_B.selectable= false;
_navi_B.htmlText =
"<FONT face='_ゴシック' size='16'>次</FONT>";

nowlook.textColor = 0xFFFFFF;
nowlook.html = true;
nowlook.selectable= false;
nowlook.autoSize = "center";

lodstat.border = true;
lodstat.borderColor = 0xAA0000;
lodstat.textColor = 0x555577;
lodstat.wordWrap = true;
lodstat.html = true;
lodstat.mouseWheelEnabled = true;
lodstat.selectable = false;

cmv_xml = new XML();
cmv_xml.ignoreWhite = true;
//System.useCodepage = true;

animLD();

}

75ここな ◆noLKOKOKEo:2010/12/22(水) 16:36:59
続き

/*--------------------------
読み込みアクション
---------------------------*/
function loadXML(){

fix_word ="";
file_scn = "./" + file_yar +"_"+ file_mon + ".xml";
// trace(file_scn);//試験用

cmv_xml.load(file_scn);
}

stINI();

cmv_xml.onLoad = function(check){

// trace(cmv_xml.status);
// trace(cmv_xml.toString());//試験用

MAX_node = cmv_xml.childNodes[0].childNodes[0].childNodes;
MAX_leng = MAX_node.length;
REC_node = cmv_xml.childNodes[0].childNodes[0];

// trace(MAX_leng);

if(check){
animST();
xml_view();
}
else{
xml_EROR();
animST();
}


};

76ここな ◆noLKOKOKEo:2010/12/22(水) 16:39:29
続き

/*-------------------------
イベント処理
-------------------------*/

中略


_btm_A.onPress = function(){
file_mon --;
if(file_mon < 1){file_yar --;file_mon = 12;}
animLD();
};

_btm_B.onPress = function(){
file_mon ++;
if(file_mon > 12){file_yar ++;file_mon = 1;}
animLD();
};

77ここな ◆noLKOKOKEo:2010/12/22(水) 16:40:05
続き

/*-------------------------
イベント用アクション
-------------------------*/

function animLD(){

nowlook.htmlText =
"<FONT face='_ゴシック' size='22'><B>" + file_yar + "年" + file_mon + "月</B></FONT>";

lodstat._visible = false;

_topANM.gotoAndPlay(2);
_lodANM.gotoAndPlay(2);
_btmANM.gotoAndPlay(1);
_crkANM.gotoAndPlay(1);

// setTimeout(loadXML,3000);
loadXML();
}

function animST(){
lodstat._visible = true;

_topANM.gotoAndPlay(1);
_lodANM.gotoAndPlay(1);
_btmANM.gotoAndPlay(2);
_crkANM.gotoAndPlay(2);
}

78ここな ◆noLKOKOKEo:2010/12/22(水) 16:40:50
最後

/*------------------------
テキスト描画
------------------------*/
function xml_view(){
crt_word();
lodstat.htmlText = fix_word;
}

function xml_EROR(){
lodstat.htmlText = "file not found";
}

function crt_word(){

// trace("word " + REC_node.childNodes[0].childNodes[4].firstChild.nodeValue);//試験用

for(i = 1;i < MAX_leng;i ++){

//各ワードの形成
status_url =
" statusID: <FONT size='12' color='#0000FF'><A href='" + REC_node.childNodes[i].childNodes[4].firstChild.nodeValue +"'>"
+ REC_node.childNodes[i].childNodes[0].firstChild.nodeValue + "</A></FONT>";
text =
"<FONT color='#000000' face='_ゴシック' size='12'>"+ REC_node.childNodes[i].childNodes[3].firstChild.nodeValue + "</FONT>";
created_at =
"<FONT size='9'><U>tweet at:" + REC_node.childNodes[i].childNodes[2].firstChild.nodeValue + "</U></FONT>";

//最終出力の形成
fix_word += created_at + "\n" + text + status_url + "\n";

}
}

79ここな ◆noLKOKOKEo:2011/01/01(土) 04:33:01
フリック処理

PR_num = 0;
moveMC_num = 0;
max_height = -2592;//上方向の上限。スプライトの最上限と画面サイズの負の差分。

/*---------------------
クリック時の判定処理
---------------------*/
_back.onPress = function(){
PR_num = 0;
delete _root.onEnterFrame;
_root.onEnterFrame = PR_cont;
};

_back.onRelease = function(){
delete _root.onEnterFrame;
FRICK_ini();
_root.onEnterFrame = FRICK;
};

_back.onReleaseOutside = function(){
delete _root.onEnterFrame;
FRICK_ini();
_root.onEnterFrame = FRICK;
};

/*---------------------
範囲外の例外処理
---------------------*/
function PR_ini(){

if(_back._y > 0){
_back._y = 0;
}

if(_back._y < max_height){
moveMC_num = 0;
_back._y = max_height;
}

}

/*---------------------
クリック処理
---------------------*/
function PR_act(){

if(PR_num < 2){
moveMC_num = 0;
}
else if(PR_num < 30){
//選択処理を入れる
}

}

80ここな ◆noLKOKOKEo:2011/01/01(土) 04:33:36
つづき

/*---------------------
フリック処理
---------------------*/
function FRICK_ini(){
FRICK_num = Math.floor(Math.abs(moveMC_num/4));
}

function FRICK(){

_back._y += moveMC_num;

PR_ini();

if(FRICK_num > 1.5){
FRICK_num --;
}

if(moveMC_num > 0.5){
moveMC_num -= FRICK_num;
}

if(moveMC_num < -0.5){
moveMC_num += FRICK_num;
}

trace(moveMC_num +" "+ FRICK_num);

}

/*---------------------
ドラッグ処理
---------------------*/
function PR_cont(){
PR_num++;

if(!moveMC_num == 0){
_back._y += moveMC_num;
}

PR_ini();

moveMC_num = moveMC_cash - _ymouse;

moveMC_cash = _ymouse;

PR_act();

trace(PR_num +" "+ moveMC_num);
}

81ここな ◆noLKOKOKEo:2011/01/09(日) 00:19:19
スロット動作

/*---------------------
初期設定
----------------------*/
s_max = 6;

ROT = 0;
ROT_add = 12;

SC_num = 0;
SC_max = 150;
SC_min = 40;

mX = new Array;
mY = new Array;
SC_num = new Array;

sum_PI =Math.PI;

iniOBJ = {_x:120, _y:60, _rotation:0, _alpha:100};

/*----------------------
初期化処理
-----------------------*/
function INIslot(){

ROT = ROT_add * Math.floor(Math.random() * (360/ROT_add));

// trace(ROT);//試験用

for(i = 0;i < s_max;i++){
_root.attachMovie("_mc","_slot"+ i,10 + i,iniOBJ);
_root["_slot" + i].gotoAndStop(i +1);
}

slot_POS();

}

/*--------------------------
ボタン操作
あとでフリック動作に変える
---------------------------*/
_STbt.onRelease = function(){
_STbt._visible = false;
_ENbt._visible = true;
_root.onEnterFrame = slotMOV;

};

_ENbt.onPress = function(){
delete _root.onEnterFrame;

ROT_stRND = Math.floor(Math.random() * 2);//すべり値
_root.onEnterFrame = slot_STP;

trace("RND:" + ROT_stRND);//試験用
};

82ここな ◆noLKOKOKEo:2011/01/09(日) 00:19:28
続き

/*---------------------------
スロット位置設定
---------------------------*/
function slot_POS(){

for(i = 0;i < s_max;i++){
PI_r = (ROT + i * 60) * (sum_PI / 180);

mX[i] = 120 + Math.floor(90 * Math.sin(PI_r) * 10) / 10;
mY[i] = 40 + Math.floor(20 * Math.cos(PI_r) * 10) / 10;

SC_piR = (ROT + i * 60) * (sum_PI / 180);
SC_num[i] = (Math.floor(120 * Math.cos(SC_piR) * 10) / 10);
if(SC_num[i] < SC_min){SC_num[i] = SC_min;}

_root["_slot" + i]._x = mX[i];
_root["_slot" + i]._y = mY[i];
_root["_slot" + i]._xscale = Math.floor(SC_num[i] * SC_num[i]/ 8)/10;
_root["_slot" + i]._yscale = SC_num[i];

}

}

/*---------------------------
スロット回転処理
---------------------------*/
function slotMOV(){

ROT_pos = ROT%60;//試験用

ROT += ROT_add;
if(ROT > 360 - ROT_add){ROT = 0;}
slot_POS();

// trace(ROT+" "+ROT_pos);//試験用

}

/*---------------------------
スロット停止処理
---------------------------*/
function slot_STP(){

ROT_pos = ROT%60;

if(ROT_pos == 0){
if(ROT_stRND == 0){
delete _root.onEnterFrame;
_STbt._visible = true;
_ENbt._visible = false;
}
else{
ROT += ROT_add;
ROT_stRND--;
}
}
else{
ROT += ROT_add;
}

slot_POS();

// trace(ROT_pos);//試験用

}

/*---------------------------
処理の指定
---------------------------*/
INIslot();

83ここな ◆noLKOKOKEo:2011/01/13(木) 07:11:01
javascriptでテキスト折りたたみ

/*------------------------------------
テキスト折りたたみjavascript
-------------------------------------*/
function tx_off(tx_state,main,sub) { //tx_offの指定時に値を取得する

if(tx_state != 0){ //値がゼロでないとき
document.getElementById(main).style.display = "block"; //指定した文字列を元に参照もとのIDを検索
document.getElementById(sub).style.display = "none";
}
else{
document.getElementById(main).style.display = "none"; //ブロック、インラインレベルの表示形式
document.getElementById(sub).style.display = "block"; //表示オフの場合
}

}

HTMLでの組み込み例。

<DIV id="1st_main_tx" STYLE="display: block;">
<A href="#bull" onclick="tx_off(1,'1st_sub_tx','1st_main_tx')">たーげっと</A>
</DIV>

<DIV id="1st_sub_tx" STYLE="display: none;">
<A href="#null" onclick="tx_off(0,'1st_sub_tx','1st_main_tx')">かれんと</A>
<H3>折りたたまれるテキスト</H3>
ABCDEFGHIJK
</DIV>
<H2>折りたたむテキスト2個目</H2>
あいうえおかきくけこ

ID、受け渡し時の名前を変更することで1ページ内に複数用意することが可能です。

84ここな ◆noLKOKOKEo:2011/01/13(木) 20:18:29
今日のお題。
以下のHTMLでリンク部分だけを書き換えて閲覧できるjavascript生成

<BODY>
<DIV STYLE="vertical-align: middle;">
<DIV style="float: left;">
<A>←</A>
</DIV>
<OBJECT TYPE="application/x-shockwave-flash" DATA="socialapps20110112rev02_01.swf" WIDTH="95%" HEIGHT="100%">
<PARAM NAME="FlashVars" VALUE="value"></PARAM>
</OBJECT>
<DIV style="float: right;">
<A>→</A>
</DIV>
</DIV>
</BODY>

85ここな ◆noLKOKOKEo:2011/01/14(金) 00:10:19
OK!完成した。
タグごとごっそり入れ替えてしまえばいいだけだったわw

/*----------------------------------
ファイルをリンクでタグごと置き換える
----------------------------------*/
innOBJ = new Array();
innOBJ[0] = '<OBJECT TYPE="application/x-shockwave-flash" DATA="';
innOBJ[1] = '" WIDTH="95%" HEIGHT="100%"><PARAM NAME="FlashVars" VALUE="value"></PARAM></OBJECT>';

inn_num = 1;//swfの初期値

function linkmaker(add_num,max_num,target_URI){ //加算値、最大値、ターゲットIDを取得

inn_num += add_num;//無条件に加算

if(inn_num > max_num){inn_num = max_num;} //これ以上は増えない
if(inn_num < 1){inn_num = 1;} //これ以下にならない

target_tx.innerHTML = innOBJ[0] + "test_swf_" + inn_num + ".swf" + innOBJ[1];

}

置き換え部分のタグはこんな感じ。

<DIV id="target_tx" align="center">
<OBJECT TYPE="application/x-shockwave-flash" DATA="test_swf_1.swf" WIDTH="95%" HEIGHT="100%">
<PARAM NAME="FlashVars" VALUE="value"></PARAM>
</OBJECT>
</DIV>


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板