見出し画像

【9num】再実行【開発記】


今回の概略

UI の部分更新を可能にする名前付きは別スコープで辞書定義してそれを render する形じゃないとインスタンスで名前重複して期待の動作をしないらしい😞
しかも描画したい UI が変数参照の変動型の場合、定義時に null な事が多いので初回 render は枠と名前だけの空っぽの UI になるのでちょっとややこしくなるっぽい🙄

#Misskey #Play #AiScript

ランダム羅列のランダム多数桁数値の指示が出る
3x3のボタンが表示される
数値に対応するボタンを押し切るとクリア
クリアすると数値とボタンの数字が再生成される
規定の状態で誤答するか時間切れで終了
何回押せたか投稿できる

----備忘録
(無し)


前回の粗筋

ボタンを配置して終了画面から再実行可能にした🤤



再実行

前回、終了画面から再実行可能な作りに変更したけどうまく描画できない事が発覚😞

https://misskey.io/notes/9ok5licwdgqp01jd

Ui:C:系が複数回実行されることで同名のUIが複数発生することによるバグのようです。

var cnt = null

let uiTestOver = [
	Ui:C:text({text: "fine"})
	Ui:C:button({text: "restert" onClick: @(){test()}})
]
@testOver()
{
	Ui:render(uiTestOver)
}

@upd()
{
	Ui:get("res").update({text: `cnt:{cnt}`})
}

let uiTest = [
	Ui:C:text({text: ""} "res")
	Ui:C:button({
		text: "add"
		onClick: @()
		{
			cnt = cnt + 1
			upd()
		}
	})
	Ui:C:button({text: "exit" onClick: @(){testOver()}})
]
@test()
{
	cnt	= 0
	Ui:render(uiTest)
	upd()
}
test()

どうやら render 内に直書きしてあると別インスタンスが生成されるらしい😞
実際には最初のインスタンスが表示されて事実上 UI の書き換えができないという話みたい🤔

………

これを参考に書き直したけれど最初に UI 定義する時は Ui:render 内に有るわけじゃなく、ただの名前付きオブジェクトに過ぎないのよね🤔
なので変数参照があるとその時 null だと埋め込めないっぽい😞デスヨネー

なのでプログレスと同じく名前は付けるけど「空っぽ」で定義して

main で空っぽ UI を render してから update ですげ替える😑
名前付きで部分書き換え UI は全部この方式になりそうかな🤔

2回分

ヨシ!👈🤪


次回は

次こそ他の UI を…🤤

この記事が気に入ったらサポートをしてみませんか?