Gjs で Clutter Actor をドラッグ
今回は、 Clutter.Stage 内の Clutter.Actor をドラッグして動かす紹介です。
ClutterDragAction を Actor に追加するだけなので簡単です。signal として、"drag-begin" "drag-end" "drag-motion" があるので、Action に connect すればドラッグの開始、終了、途中のイベント処理を追加できます。
#!/usr/bin/env gjs const Clutter = imports.gi.Clutter; Clutter.init(null); let stage = new Clutter.Stage(); stage.set_background_color(Clutter.Color.get_static(Clutter.StaticColor.BLACK)); stage.connect('destroy', Clutter.main_quit); let actor = new Clutter.Actor({reactive:true}); actor.set_background_color(Clutter.Color.get_static(Clutter.StaticColor.WHITE)); actor.set_size(100, 100); actor.set_position(100, 100); let action = new Clutter.DragAction(); actor.add_action(action); stage.add_actor(actor); stage.show(); Clutter.main();
非常に簡単です。Clutter.DragActionを作成し、Actor に add_action するだけです。イベント処理は、 acton.connect('drag-end', function(){...}); してあげれば大丈夫です。