AwesomeMousePointer
マウスでアニメーションの再生を開始する機能を持つクラスがあります。
class AwesomeMousePointer{
void startAnimat();
void stopAnimat();
};
マウスアニメーションを開始するかどうかを判断する責任を負った別のオブジェクトがあります(これは、オブジェクトの内部ヒットテストに基づいています。たとえば、マウスが特定の時間オブジェクト内にある場合)
class SomeShape(){
Event<MouseArgs> startAnim
Event<bool> interrutptAnim
bool hitTest(int x, int y);
//Inside some loop function, check if the mouse is inside the object
if(hitTest(mouseXPos, mouseYPos)){
//if the mouse if inside for x time
NotiftyEvent(startAnim, MouseArgs);
}
else{
//mouse left the object
NotifyEvent(interruptAnim, false);
}
ここで、再び my 内にAwesomeMousePointer
、イベントのリスナーを追加します。
AddListener(SomeShape::startAnim, &AwesomeMousePointer::startAnim);
AddListener(SomeShape::interruptAnim, &AweseommousePointer::interruptAnim);
私が試した短い別の例では、シングルイベントシステムを使用NotifyEvent
して正しく動作しています。AddListener
私のこのアプリケーション内には、 と のオブジェクトがたくさんありSomeShape
ますAwesomeMousePointer
。私の質問は、アニメーションの上記のロジックが機能するかどうか、またはSomeShape
オブジェクトを明示的に渡してイベントをサブスクライブする必要があるかどうかです。その場合、物事は少し難しくなります。
例:
AddListener(shapeObject1.startAnim, &AwesomeMousePointer::startAnimat);
AddListener(shapeObject2.startAnim, &AwesomeMousePointer::startAnimat);
AddListener(shapeObject3.startAnim, &AwesomeMousePointer::startAnimat);
また
AddListener(SomeShape::startAnim, &AwesomeMousePointer::startAnimat);
上記の2番目のものはうまくいきますか?そうでない場合、オブジェクトを明示的に渡さずにどのようにそれを行うのでしょうShapeObjects
かMousePointer
。
内部のイベントSomeShape
を静的にすると、これは機能しますか?
static Event<MouseArgs> startAnim
static Event<bool> interrutptAnim