DxOpalのファイル読み込みクラスを作ってみた
前回のDxOpalでのマップファイル読み込みの件。結局XMLHttpRequestでなんとか読み込んでいたんだけどJavaScriptむき出しはなんなのでファイル読み込み部分をモジュール化しておこうと思う。
せっかくなのでDxOpalのコードを参考にRemoteResourceクラスとやらを継承して汎用のクラスを作ってみる。エラー処理は省略。
class Text < RemoteResource RemoteResource.add_class(Text) attr_accessor :str # Load remote text (called via Window.load_resources) def self._load(path_or_url) txt = new() txt_promise = %x{ new Promise(function(resolve, reject) { var request = new XMLHttpRequest(); request.open('GET', #{path_or_url}, true); request.responseType = 'text'; request.onload = function() { txt['$str='](request.response); resolve(); }; request.send(); }); } return txt, txt_promise end end
使い方は以下。
Text.register(:sample, 'sample.txt') Window.load_resources do puts Text[:sample].str end
load_resources後にファイルの非同期読み込みが完了していて中身が参照出来るようになる。
0
ディスカッション
コメント一覧
まだ、コメントがありません