obj v0010 g_attrObj - cwtickle/danoniplus GitHub Wiki

← オブジェクトリファレンスに戻る

g_attrObj

概要

矢印・フリーズアロー個別の属性を管理するオブジェクト。v17 までは setAttribute で管理していたが、v18 以降は g_attrObj で管理している。

キー名は {種別}{レーン番号}_{出現順番号} の形式。

// 0番レーンの20番目に出現する矢印
const arrowName = `arrow0_20`;
g_attrObj[arrowName].cnt;     // → 残フレーム数
g_attrObj[arrowName].y;       // → 現在のY座標

// 1番レーンの3番目に出現するフリーズアロー
const frzName = `frz1_3`;
g_attrObj[frzName].isMoving;  // → 移動中かどうか

生成タイミング

矢印・フリーズアロー出現時(makeArrow / makeFrzArrow)に生成される。消去時(judgeObjDelete)に削除される。オブジェクト自体(g_attrObj = {})は getArrowSettings で初期化される。


プロパティ

矢印・フリーズアロー共通

  • cnt (number) — ステップゾーンまでの残フレーム数。arrivalFrame + 1 で初期化され、毎フレームデクリメントされる。0 に達したとき判定が行われる
  • boostCnt (number) — Motion オプション用の残フレームカウンタ。motionOnFrames のインデックスとして使用され、毎フレームデクリメントされる
  • boostSpd (number) — 個別加速倍率(boost_data から設定。通常は 1
  • dividePos (number) — 所属レイヤー番号の偶奇(0: 通常側, 1: リバース側)。ステップゾーン位置の参照に使用。スクロール変化(scrollch_data)や StepArea オプションにより変動する
  • dir (number) — スクロール方向(1: 上向き通常, -1: 下向きリバース)。移動量の符号計算に使用
  • boostDir (number) — 個別加速の方向(1: 順方向加速, -1: 逆方向加速)。boostSpd の符号から分離されたプロパティ
  • y (number) — オブジェクトの現在Y座標(絶対座標)。毎フレーム更新される
  • movLockFlg (boolean) — 移動ロックフラグ。true のとき Y 座標が固定される。矢印モーション(arrowCssMotionData)の movLock 指定、またはキー定義の movLockX ヘッダーにより設定される
// movLockFlg が true のとき、矢印は生成された位置に固定される
if (!g_attrObj[arrowName].movLockFlg) {
    addTransform(arrowName, `root`, `translateY(${wUnit(y)})`);
}

矢印固有

  • prevY (number) — 直前フレームのY座標。判定処理(judgeArrow)でステップゾーンとの交差判定に使用
  • Arrow (string) — 現在の矢印色(枠部分)。個別色変化(color_data / ncolor_data)により更新される
  • ArrowShadow (string) — 現在の矢印影色(塗りつぶし部分)。同様に更新される
// 色変化処理での使用例(changeArrowColor 内部)
const arrowTop = document.getElementById(`${_name}Top${_j}_${_k}`);
if (arrowTop.getAttribute(`color`) !== g_attrObj[arrowName].Arrow) {
    arrowTop.style.background = g_attrObj[arrowName].ArrowShadow;
}

フリーズアロー固有

  • judgEndFlg (boolean) — 判定終了フラグ(初期値: false)。OK 判定(judgeKita)または NG 判定(judgeIknai)の完了後に true になる。true になるとフリーズアローは帯の消滅アニメーションのみ継続し、以降の判定は行われない
  • isMoving (boolean) — 移動中フラグ(初期値: true)。ヒット(changeHitFrz)時に false に変わり、帯の縮小処理に切り替わる
  • frzBarLength (number) — フリーズアロー帯の現在の長さ(px)。ヒット中は毎フレーム currentSpeed * boostSpd 分だけ減少し、0 以下になると OK 判定となる
  • keyUpFrame (number) — ヒット中にキーを離していたフレーム数。g_headerObj.frzAttempt を超過すると NG 判定(judgeIknai)になる
  • barY (number) — 帯部分(frzBar)の相対Y座標。ヒット中は毎フレーム更新される
  • btmY (number) — 後発矢印部分(frzBtmRoot)の相対Y座標。ヒット中は毎フレーム更新される
  • Normal (string) — 通常時の矢印部分の色
  • NormalBar (string) — 通常時の帯部分の色
  • NormalShadow (string) — 通常時の影部分の色
  • Hit (string) — ヒット時の矢印部分の色
  • HitBar (string) — ヒット時の帯部分の色
  • HitShadow (string) — ヒット時の影部分の色
  • HitAll (string) — 生成時点での全体色変化後のヒット矢印色(全体色変化との比較用に退避)
  • HitBarAll (string) — 生成時点での全体色変化後のヒット帯色
  • HitShadowAll (string) — 生成時点での全体色変化後のヒット影色
// フリーズアローのライフサイクル概要
// 1. 生成時: isMoving=true, judgEndFlg=false → 通常スクロール
// 2. キーを押した瞬間: isMoving=false → 帯の縮小開始(changeHitFrz)
// 3. 帯が0になる: judgEndFlg=true → キター判定(judgeKita)
// 4. キーを離した: keyUpFrame++ → frzAttempt超過でNG(judgeIknai)、judgEndFlg=true
// 5. judgEndFlg=true 後: 帯の残骸アニメーションのみ継続し、やがて削除