堕天使の煉獄

Gallery
Comic
Story
Production
Work
Link

2017-03

31

01:09:51

ベーコンのアスパラ巻

最近あんまし良い感じのベーコン安く売ってないんだよなぁ。
ってことで、4枚セットのが3~4連で298円ぐらいの使い切りパックのベーコンをつかって作ることに。

食べてる最中に気づきました。

ベーコンのアスパラ巻って何だ? アスパラのベーコン巻だろう……。
しばらく間違えに気づくのが遅かったりする今日この頃。アスパラじゃ巻けねー。
お味の方は、意外にも使い切りパックのベーコンでもそれなりに食べれるなと。


そんななか、意外に手間取ったツール作成。
d_138.jpg

flash@ActionScript3で簡単な脱出ゲームとか作ってみるべかーとか思ってたんですが、以前からゲーム画面とかのレイアウト作りつつ、各部分の座標とか簡単に取れるようなツール欲しいなと思っていたんですよね。メッセージウィンドウとか、たとえばRPGなんかでのHPとかのパラメータ表示位置とかそゆの。手打ちでコードに打ち込む時とかにちまちま座標調べるの面倒だったりで。

んで、さらに脱出ゲームとかって、クリップポイントとかいっぱい管理するじゃないですか。ますます座標まわり取得簡単に管理できる感じの欲しいなーと。

で、ぐぐってみたところ、時勢なのか、やたらとスマホ向けのオンラインツールでのアプリ開発者向けのレイアウト作成ツールがやたらとヒットする。

それでもめげずにぐぐってみると、いくつかは普通のデスクトップ向けソフト出てきたんですが、初めてツール作ってみました的な使い物にならないレベルのもしか出てこない。

うーむ。

古くは、まだweb系のお仕事とかやってた時分にちょっとつかってたAdobeのFireworksみたいな感じのツールがほしかったんですよね。Fireworksはwebページのレイアウトとか向けの奴ですけど。全体のレイアウトとかざっとコレでつくって、実際のページはhtml手打ちで。角丸デザインのボタンとかの部品はエクスポート。みたいな使い方できて便利だったりで。

でまあ、無いなら作るかと言う感じで。

見通し的には以前に似たようなレイアウト作成ツール(某ソフトのスキン作成ツール)を作りかけた事があって。アレはあとはもうひたすら作業だけって段階まで来たところで心が折れて制作放棄したのですが(commandパターンで作成必要なコマンドが100件以上とか……めんどくさくてやってられねぇ。そのうえそんな利用頻度の高いツールでもないし)

今回のはかなり規模も小さめのささやかなツールな感じなので、commandパターンでのアンドゥ&リドゥの実装経験にもちょうどいいかなと。

Fireworks使ってたときの記憶も呼び戻しつつ、選択範囲に画像設定から、レイアウト指定(align)付きで文字いれれて、文字と画像合成キャプチャしたものを画像としてエクスポート機能とか、角丸ボタン作成。
あとはフォーマット書式でのアイテムの座標コピー機能なんかも盛り込んでみたり。

drawRect(%x, %y, %w, %h)

なんて書式をプリセットで登録しておけば、アイテムの上で右クリック→フォーマット書式選択で%~の部分にそれぞれの値が入った物がクリップボードにコピーされる。みたいな。

と、この辺まではさして詰まるところもなく、前述の以前の作りかけの似たようなツールのコードを流用しつつさくさくつくっていったのですが。

嵌りポイントがいくつか。

まずQGraphicsSceneのQGraphicsItemってローカル座標とシーン座標の二つの座標系を持っていると言うところ。
んでもって、QGraphicsItemを選択状態にしてドラッグで移動した時にはローカル座標で移動になる。

どういう事かというと、ドラッグで移動した時、ローカル座標のposが(200,100)だとしてシーン座標が(100,100)だと、実際のシーン上の表示位置は(300,200)になっちゃうんですよね。

んでもってシーン上からアイテムを移動するとき(十字キーで移動とか)はシーン座標で移動してしまう。

そんな感じで、操作の場所と種類によって異なる座標系に適用されるのでしばらく混乱したり。
最終的には片方の座標系だけを基準として、異なる座標系の変化を基準の座標系に置き換える処理を必ず入れるみたいな感じで処理したんですけど……。
フラグ一つでローカル座標使わないと出来ない物なのか……。

ほかにはQGraphicsViewとQGraphicsSceneとQGraphicsItemそれぞれのマウスイベントまわり。それぞれを順にイベントが送られてくるのですが、物によってはここで以降のイベントは起こさないようにここで止める。とか、先に下流にイベントを送って処理させてから処理する。とか、いろいろと入り組んでてとてもめんどくさい。
見えないところに隠蔽されてて勝手に処理されてる処理とかもあったりするし。

複数のアイテムを選択するってだけでなんでこんな面倒な事になってるのか……。選択状態だけなら良いんですが、複数選択状態で移動とかするとドラッグ開始位置の下にあるアイテム以外が選択外れちゃったりとか、イベントの流れをしっかりと把握して、そのイベントを受理するのかの細かい条件分けあたりがかなり面倒だったり……。

アンドゥ&リドゥ関係はわりと拍子抜けするぐらいあっさりと。
QUndoStackが普通に便利すぎ。
自前でこの辺のスタック管理のフレームワーク書いたこともあるんですが、かなり面倒だった記憶が。その辺さっくりとすでに実績のあるライブラリだと使うのも安心ですね。

十字キーでアイテム移動とかのとき、1pxずつ移動のたびにコマンド発行してると、アンドゥも1pxずつ巻き戻すのかというと、普通は十字キー移動以外のコマンドがくるまで移動位置を加算して保持して一回のコマンドで巻き戻せるようにするのは定石だとおもうのだけども、その辺はどうやるのか。
スタックで管理してるんだから、pop_backして同じコマンドだったら移動量を加算してまたpushする。みたいな感じなのかなーとおもったのだけども。
pushはあるけどpopが無ぇっ。

あるぇーじゃあどうやんの? とおもったら、スタックするコマンドはQUndoCommandというオブジェクトの派生クラスで実装するのですが、このなかにmergeWithという仮想メソッドがあって、ここで同一のコマンドの場合は値を結合するみたいな処理を書く専用のものがあるのかー。
こりゃまた便利。

んでもググってるときに同じところで悩んでる人のQUndoStackにpopは無いんですか? てきな記事が結構ヒットしたりw
そうだよなー普通にQUndoStack、スタックと来れば普通にpopで何とかするんだろうなってのは普通に浮かびますよね。

それからstd::functionはやっぱ便利だなーと。
単に値書き換えるだけのコマンド系はオブジェクトの値書き換えのsetterとgetterのメンバ関数をstd::functionで登録する形にすればあとはテンプレートつかうと、いくつもいくつもコマンド書かなくても済むようになったりで。


QT CreatorのUI作る画面のプロパティ設定するろところ。
あんな感じのコントロールが標準でほしいです。
ツリーウィジットの各項目にスピンボックスやらラインエディタやら付ける感じの。
同じ様なの作ろうとしたら、標準機能だけでは無理で結構ディープな茨道をすすまないと無理なところがアレだなぁ……。
この辺は前述の以前の作りかけツールの時点でクリアしてたので、今回はちょっとコード見直してちょこっと修正したぐらいで済んだんですけども。以前はこの部分が一番時間掛かってた気がするぽ。
QGraphicsSceneまわりでもそうだったけど、ちょっと違ったことやろうと思うと、膨大なイベント処理から必要な処理を取捨選択したりハックしたりと、なんだかんだでコーディングの時間よりもドキュメントを読む時間の方にばかり時間がとられていく……しかも全部英語だしぃ……。

そんな感じで一週間も掛からないかなと思ってたのが、一週間以上かかっちゃいましたね。
といいつつまだ途中ですけど。
あとはセーブ機能を付ければとりあえず使い物になりそうかなと言うところまでは出来たり。
あとは運用しながらちまちま煮詰めていく感じでしょうか。


しかし……軽めのflash@ActionScriptなゲームつくってみようとおもってはいるのですが。

こんなんどうだろう……とネタを思いつくも、ネタをもうすこし具体的に煮詰めだすと、どんどんとネタが膨らんできて、こりゃ軽く……じゃ済まないな。って感じになってお蔵入り。
みたいな事ばかりやってたりして。

普通にゲームネタ考えるのが楽しい~ってだけでいまいち具体性に欠けるネタばっかり~。

やっぱ明確な〆切りとかないとダメなのかねぇ……。
Sun
Mon
Tue
Wed
Thu
Fri
Sat
01
02
03
04
おあずけ三昧
05
これってやっぱ嫌がらせ的なものなのかな
06
07
08
09
やっぱついてないわ
10
11
12
かふーん
13
14
15
16
17
18
19
20
[春分の日]
21
22
23
24
25
26
27
28
29
30
31
ベーコンのアスパラ巻
total:2080611 t:73 y:2908
■記事タイトル■

■年度別リスト■
2024年 2024年12月(0)
2024年11月(0)
2024年10月(1)
2024年09月(2)
2024年08月(1)
2024年07月(1)
2024年06月(5)
2024年05月(2)
2024年04月(1)
2024年03月(6)
2024年02月(4)
2024年01月(3)
2023年 2023年12月(3)
2023年11月(1)
2023年10月(2)
2023年09月(3)
2023年08月(3)
2023年07月(3)
2023年06月(7)
2023年05月(8)
2023年04月(2)
2023年03月(1)
2023年02月(2)
2023年01月(3)
2022年 2022年12月(4)
2022年11月(3)
2022年10月(1)
2022年09月(3)
2022年08月(3)
2022年07月(2)
2022年06月(1)
2022年05月(3)
2022年04月(2)
2022年03月(2)
2022年02月(1)
2022年01月(6)
2021年 2021年12月(8)
2021年11月(3)
2021年10月(4)
2021年09月(6)
2021年08月(2)
2021年07月(1)
2021年06月(3)
2021年05月(2)
2021年04月(2)
2021年03月(3)
2021年02月(1)
2021年01月(4)
2020年 2020年12月(3)
2020年11月(7)
2020年10月(2)
2020年09月(3)
2020年08月(1)
2020年07月(3)
2020年06月(7)
2020年05月(5)
2020年04月(8)
2020年03月(4)
2020年02月(2)
2020年01月(4)
2019年 2019年12月(1)
2019年11月(1)
2019年10月(2)
2019年09月(1)
2019年08月(3)
2019年07月(2)
2019年06月(2)
2019年05月(2)
2019年04月(4)
2019年03月(1)
2019年02月(7)
2019年01月(1)
2018年 2018年12月(1)
2018年11月(1)
2018年10月(5)
2018年09月(1)
2018年08月(5)
2018年07月(1)
2018年06月(1)
2018年05月(1)
2018年04月(2)
2018年03月(2)
2018年02月(1)
2018年01月(1)
2017年 2017年12月(2)
2017年11月(1)
2017年10月(2)
2017年09月(5)
2017年08月(8)
2017年07月(2)
2017年06月(1)
2017年05月(1)
2017年04月(3)
2017年03月(5)
2017年02月(7)
2017年01月(8)
2016年 2016年12月(7)
2016年11月(2)
2016年10月(3)
2016年09月(7)
2016年08月(8)
2016年07月(10)
2016年06月(17)
2016年05月(6)
2016年04月(8)
2016年03月(10)
2016年02月(5)
2016年01月(10)
2015年 2015年12月(7)
2015年11月(7)
2015年10月(13)
2015年09月(7)
2015年08月(7)
2015年07月(5)
2015年06月(4)
2015年05月(5)
2015年04月(2)
2015年03月(4)
2015年02月(1)
2015年01月(7)
2014年 2014年12月(12)
2014年11月(8)
2014年10月(4)
2014年09月(6)
2014年08月(7)
2014年07月(4)
2014年06月(2)
2014年05月(5)
2014年04月(4)
2014年03月(8)
2014年02月(4)
2014年01月(8)
2013年 2013年12月(15)
2013年11月(8)
2013年10月(3)
2013年09月(3)
2013年08月(8)
2013年07月(0)
2013年06月(0)
2013年05月(0)
2013年04月(0)
2013年03月(0)
2013年02月(0)
2013年01月(0)

■レス履歴■

2023-09-26 14:59:38 - 久慈光樹

2023-09-26 14:29:10 - 織田霧さくら

2023-09-26 13:10:45 - 久慈光樹

2023-03-20 05:30:16 - 織田霧さくら

2023-03-15 20:42:58 - まうる

2022-12-26 19:14:57 - 織田霧さくら

2022-12-25 02:28:36 - まうる@まるるん

2022-09-30 04:29:01 - 織田霧さくら

2022-09-23 19:01:29 - まるるん

2022-06-16 21:06:34 - 山本


■ファイル抽出■

■ワード検索■

堕天使の煉獄

https://rengoku.sakura.ne.jp
管理人

織田霧さくら(oda-x)

E-mail (■を@に)

oda-x■rengoku.sakura.ne.jp

堕天使の煉獄バナー 堕天使の煉獄バナー