[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:01275] Re: Billboard2
┏━◇━ みんなのこころがつながるよ【メーリングリストならDNS】 ◇━┓
◆ 参加するのは簡単だけど自分で作るとなるとちょっと不安。。
◇
◆ 2年以上の実績/みんなが使える簡単なシステム/あったかサポート
◇ ここならたぶん大丈夫
┗━◇━ デジタルだけどあったかい ◇━ http://www.dns-ml.co.jp/ ━◇━┛
えんどうです。ぜんぜん追試してませんが、
> import java.awt.event.*;
> import java.util.Enumeration;
> import javax.media.j3d.*;
> import javax.vecmath.*;
>
> public class ChangeTexBehavior extends Behavior{
>
> private Billboard bill;
> private TransformGroup rotate;
>
> private Transform3D t3d = new Transform3D();
> private Matrix3f rot = new Matrix3f();
>
> private int angle;
>
> ChangeTexBehavior(Billboard bill,TransformGroup rotate){
> this.bill = bill;
> this.rotate= rotate;
> System.out.println("called const");
>
> }
コンストラクター引数である Billboard を使って、
コンストラクター内(またはinitialize)で
WakeupOnBehaviorPost をひとつ生成してしまえば良いのではないでしょうか。
そのためには WakeupOnBehaviorPost 型のフィールドを持ちます。
public class ChangeTexBehavior extends Behavior{
private WakeupOnBehaviorPost wakeup = null;
> public void initialize(){
>
> wakeupOn(new WakeupOnBehaviorPost(bill,0));
この箇所は生成してさきほどのフィールドに代入しておきます。
this.wakeup = new WakeupOnBehaviorPost(bull, .. );
> System.out.println("called ini");
>
>
> }
>
> public void processStimulus(Enumeration criteria){
>
> System.out.println("called process");
>
> rotate.setTransform(t3d);
> t3d.getRotationScale(rot);
>
> angle = (int)Math.acos(rot.m00);
>
> System.out.println(angle);
>
> wakeupOn(new WakeupOnBehaviorPost(bill,0));
ここでは毎回生成せずに、initialize() で保存したものを使う方が良いのでは。
wakeupOn(this.wakeup);
>
> }
> }
これで動くかどうかはわかりません。やってみてください。
---
ENDO Yasuyuki <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/index.html (Japanese Only)