問題タブ [blockly]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
blockly - Blockly にはファイル セレクターがありますか?
Blockly を使用して、技術者以外のユーザーがテスト スクリプトを指定できるようにしようと考えています。
その一部にはファイル セレクターが必要ですが、Blockly にファイル セレクターがあるようには見えません。そうですか?
実際、標準ブロックの完全なリストは見つかりません。誰かURLを持っていますか?
標準の Blockly ファイル セレクターがない場合、(どのように) Windows ファイル セレクターにアクセスできますか? (そして、一般的に、どのように DOS コマンドを実行できますか?)
javascript - JS インタープリターを使用して Blockly エラーを強調表示する方法は?
実際、私の要件は、特定の js 関数にエラーがあるブロックを強調表示することです。
を使用してブロックを開発していますBlockly
。Blocky で 1 つのロジック (関数) を適用すると、そのブロックは js に解析されます。
次に、実行時間中に js を段階的に実行する必要があります。ロジック (関数) でエラーが発生した場合は、ブロックでそのエラーを強調表示する必要があります。
エラーの行番号を取得することは可能ですか?
このリンクを見てください。
javascript - ブロック的に、ブロックの接続/削除/ドラッグ/リリースを検出します
ドキュメントと公式フォーラムを検索しましたが、答えが見つかりませんでした。
Blockly では、次のことを検出したいと考えています。
- ブロックが別のブロックに接続されているとき。
- ブロックがワークスペースから削除されたとき。
- ワークスペースが空の場合。
- ユーザーがブロックをドラッグしているとき。
- ユーザーがブロックを解放するとき。
出来ますか?init
と のonchange
イベントしか見つかりませんでした。
javascript - eval なしでユーザー提供の文字列からカスタム Blockly ブロックを生成する
JavaScript を使用して文字列を Google Blockly ブロックに変換しています。
入力文字列は次のようなものです"Hello %s World"
- where%s
は文字列入力を定義します。それを次のように変換する必要があります。
しかし、 を使用せずにこれを達成する方法がわかりません。eval()
入力文字列はユーザーからのものであるため、使用eval()
するのは良い考えではないことを理解しています。
私の現在のコードは次のとおりです。
しかし、必要な Blockly コードを作成する方法がよくわかりません。JavaScript を文字列で構築しeval()
、最後に使用する必要はありません。
誰かがこれを手伝ってくれませんか?
jquery - グローバル変数を使用して JavaScript を動的にロードする
私のプロジェクトには次のことが必要です:
- グローバル変数に値を設定する
- 次に、このグローバル変数を使用する外部 JavaScript をロードします
次に、変数を変更し、同じ JavaScript を再度ロードしますが、外部 JavaScript は次のようになります (Google Blockly を使用):
/li>
グローバル変数はblock_nameです。そこに変数を渡すので、変数のみが渡され、その値は渡されないようです。したがって、javascript を 2 回呼び出して HTML にロードすると、両方のブロックが同じように見えます。
おそらくJavaScriptをロードする方法は重要ではないので、試しました:
また、AJAXを介して、<script>
タグ間のHTMLにロードします。
インポートされたコードは次のようになります。
最初のブロックの名前は B で、2 番目のブロックも同様ですが、最初のブロックは A で、2 番目のブロックは B でなければなりません。楽しい部分は、名前 A のブロックを使用すると機能するため、システムは名前 A のブロックを認識しますが、名前 B で表示します。
それらが非同期的にロードされている間に、メソッド .Blocks の背後にある関数が引き継ぎ、それを B として登録している間に、グローバル変数が A で半分埋められて B になる可能性もあります...
しかし、今では、インポートされたjavascriptにグローバル変数を渡すことに問題がないことを確認したいと思います...そして、私の創造性はこのケースですでにかなりなくなっているので、どんな提案にもオープンです...
javascript - Blockly の「キャッチされていない TypeError: プロパティを設定できません...」
Blockly でコーディングを開始していますが、新しいブロックを作成しようとすると問題が発生します。私が行った手順:
Blockly
アプリケーションコードをダウンロードします。- すべてのファイルを という名前のフォルダーに入れます
Blockly
。 - ツールボックスが正常に機能するかどうかを確認するために、そのフォルダーに新しい html ファイルを作成しました。
- Block Factoryで 2 つの新しいブロックを作成しました。
- これらの新しいブロックを新しい
customBlocks.js
ファイルでツールボックスに追加しようとしました。
2つの新しいブロックを追加したため、4番目のステップを作成しようとすると問題が発生しますが、jsにある最初のブロックのみがツールボックスに表示されますが、2番目のブロックは表示されません。ブロックの順序は関係ありません、2番目のものだけが正しく表示されません。
これが私のhtml
ファイルです:
これが私のcustomBlocks.js
ファイルです:
Google Chrome
のコンソールに次のエラーが表示されることがわかりました。
キャッチされていない TypeError: undefined のプロパティ 'move_right' を設定できません
ここで立ち往生していて、何が問題なのかわかりません。どんな助けでも大歓迎です。
PS: まだブロックを完成させていないので、ブロックのロジックに集中しないでください。ただし、ロジックを完成させる前に、両方のブロックが正しく表示されることを確認したかったのです。
前もって感謝します!
javascript - Javascript を使用して Blockly のブロックのインスタンスを作成するにはどうすればよいですか?
ファイルで次のブロックを実行しBlockly
ました。customBlocks.js
div
これは、設定したピクセル数に応じて a を右に移動します。移動するピクセルの量を配置するには、math_number
ブロックをブロック内に配置する必要があります。move_right
私は自分のhtml
ファイルに以下workspace
を挿入する変数を持っていますBlockly workspace
:
私がしたいこと
Blockly のワークスペースにブロックが表示される前ではなく、一度にこのピクセル数を JavaScript から取得することです。
私が試したこと
/li>workspace
ブラウザ(Google Chrome)のコンソールから変数に直接アクセスしようとしましたが、「子ブロック」を取得できましたが、それらの値は取得できませんでした。次のように:また、ワークスペースを dom に変換してからテキストに変換しようとしました。
ここで、「子ブロック」、つまり
math_number
ブロックの値がテキストに保存されていることがわかりますが、どうすれば取得できるかわかりません。
なぜ私はそれを達成したいのですか?
私が欲しいのは、ユーザーが右に 300 ピクセル移動したかどうかを確認することです。もしそうなら、「わかりました!」というメッセージを表示します。
私の質問
ワークスペースに配置したブロックのインスタンスを作成し、そのインスタンスでピクセル値にアクセスする可能性はありますか?
編集:
left
@Oriolが言ったように、次のように値を取得することもできました。
のプロパティを使用しているため、ここには入れJquery
ませんでした(これも良いオプションですが、意図したとおりではないため、まったく問題ありません)。私の意図は、後でいつでも操作できるようにBlock
配置した後のインスタンスを取得することです。Blockly workspace
css - Blockly ワークスペースのサイズを変更する別の方法はありますか?
私は自分のBlockly workspace
内部をdivに適応させようとしています。ページが小さくなると、divとそのBlockly workspace
内部も小さくなると思います。
ドキュメントGoogle
に提供する方法があることは知っていますが、それは少し「汚い」と思い、サイズを変更するには多くのコードを使用する必要があります。
のデバッガーを見ると、オブジェクトGoogle Chrome
に a を設定できることがわかりましたが、ワークスペースを挿入するときにそれを変更する方法がわかりません:max-height
svg
height
とにかく、それは私の問題をまったく解決しません (ページのサイズを変更する前に、ワークスペースが div よりも大きくならないようにしてください)。
blocklyDiv
また、に注入するものをBlockly workspace
変更しようとしましdisplay: flex;
たが、何も変わりません。
Google's
のサイズを変更する例よりも良い方法はありBlockly workspace
ますか?
前もって感謝します!