2017-10-29
v0.1.7で描画開始が・・・?
なでしこ3 |
なでしこ3がバージョンアップして、また色々の不具合が修正されたようです(^▽^)
がっ・・・!
それに伴って、いきなりフェードインとスライドショーが動かなくなっちゃいましたΣ(゜д゜;
いやー、0.1.7で動かなくなるのはまあ分かるとしても、読んでるスクリプトは0.1.6のままなのにねー。
メモ帳にコピペして保存して文字列比較をすると0と出るところを見ると、どうやら0.1.7で上書きされてしまってるっぽいね;
それはさておき、おかしくなったのか仕様変更になったのか定かじゃないけど、問題は「描画開始」でした。
いままでは、『「canvas#cv_1」のDOM要素取得。』と、DOM要素を一回取得したら、その後は『「cv_1」へ描画開始。』とIDで描画先を指定できたんだけど、どうやらコレがうまくいってない。
DOM要素取得した直後に「それへ描画開始」は問題ないようで、とりあえずそれで動くようにしといたけど・・・
でもそれだと、描画開始のたびにセットで毎回DOM要素取得しなきゃないんだよね~。
うううん、何か他に正しい書き方があるんだろうか・・・
そもそもcanvasの使い方はマニュアルに説明が無くて、ワタシがテキトーに色々やってできるようになったヤツだからねえ;;;
・・・と思ってたんだけど、どうやらやっぱりバグじゃないかな?
今見たら、マニュアルの「描画開始」の利用例が追加されてたんだけども、エラーになりますよぉ・・・
https://nadesi.com/doc3/index.php?plugin_browser%252F%E6%8F%8F%E7%94%BB%E9%96%8B%E5%A7%8B
「nako3_canvas_1」へ描画開始 [0, 0]へ「https://nadesi.com/doc3/skin/nadesi.com/resource/logo_nadesiko_title.gif」の画像描画。
ちなみに、このようにすると動きます。
「canvas#nako3_canvas_1」のDOM要素取得。 それへ描画開始 [0, 0]へ「https://nadesi.com/doc3/skin/nadesi.com/resource/logo_nadesiko_title.gif」の画像描画。
奇しくも上でぐずぐずぼやいていたことの、分かりやすい実例になった。
むむむ・・・
↑ v3.0.38で修正されました!(2018/03/29 追記)
描画開始に指定できるのは、(仕様では?)以下の3種類です(引数が文字列の場合、1→2の順に試行される)
idがcvでclassがresultのcanvasがある場合・・・
1.CSSで指定するときに使うようなセレクタを文字列で指定。
以下のような形で指定できる(※の条件にも注意)
"canvas"へ描画開始
"canvas.result"へ描画開始
".result"へ描画開始
"#cv"へ描画開始
"canvas#cv"へ描画開始
※複数見つかるような条件の場合、最初に見つかる1つが対象になる。
2.canvasのidを文字列で指定。
"cv"へ描画開始
※idに"#"を付けた場合はセレクタ扱い。
3.文字列ではなくDOM要素そのものを指定。
1度、
CVEは"cv"をDOM要素取得
として変数に持っといて、以降は、
CVEへ描画開始
と指定する。
注意点としては、「セレクタとして解釈するとなんらかの要素が取得できてしまうID」は使えません。例は以下。
idがbodyというcanvasがある場合。
"#body"や"canvas#body"のようにセレクタならOK。
idのつもりで"body"としても先にセレクトとして試行してBODYタグを見つけてしまうのでNG。
#をつけてセレクタにしたら、あっさりと出来ました☆
それに記事中で書いてた「それへ描画開始」も、これは3に該当するやり方なので、「それ」じゃなく何らかの変数に入れてやれば、何度もDOM要素取得することなんて無かったわけですね~(^▽^;
・・・でもやっぱり、2のID指定が、うまくいかなくなっちゃってる気がしますねえ。
特に競合するタグもないし何よりバージョンアップ以前は問題なかったので・・・