0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

micro:bit v2で自作のカスタムブロックを新たなプロジェクトに入れると過去にいれてたコードが動く件

Posted at

謎の呪われたコード

micro:bit v1.5で動いてた自作のカスタムブロックが入ったコードをv2で動かすとLEDの表示が現在のコードには入っていない過去にいれた記憶のある表示になったり、ボタンのイベントを消してるはずなのにボタンイベントが動いてしまう現象が発生しました。
v1.5では発生を確認できてなくて、シリアル通信などやってるからおかしいのかな?とか思いつつ一晩寝て気づきました。
僕のカスタムブロックの作りに問題がありました。

発生した原因

原因ですが非常に簡単なことでした。
新たなプロジェクトからgitから入れたカスタムブロック自体にはサンプルコードとしてブロックを配置したmain.tsも入れていました。
これが問題で、新規で作ったmain.tsとカスタムブロック内のmain.tsが並行して動くという状態になっていました。
順番としてmain.tsが実行されてからカスタムブロック内のmain.tsが動く感じでボタンなどのイベントが複数存在する感じです。
image.png

解決方法

カスタムブロックを作成するときには main.ts と main.blocks のを消すか中身を削除しましょう。
そして読み込んでるプロジェクトでコードにしてエクスプローラーからリロードボタンを押して再度読み込ませます。
image.png

結論

サンプルコードとして置いた感じにすると悲しい出来事が発生します。前に書いた記事のままだと特にそうなってしまいます。
https://qiita.com/wakasamasao/items/eedf7f8d6308e828986a
このお作法は適当に作ってた僕が知らなかっただけというオチなんですが。
とりあえず、v1.5では発生してなかったのにv2ではなぜかカスタムブロック内のコードがひっそり動いてしまうので通信系だと変なコード埋め込まれて動いてるとかもできなくないので結構怖いですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?