コード例 #1
0
void Catoms3DBlockCode::processLocalEvent(EventPtr pev) {
    MessagePtr message;
    stringstream info;

//cout << "event #" << pev->id << ":" << pev->eventType << endl;
    switch (pev->eventType) {
        case EVENT_NI_RECEIVE: {
            message = (std::static_pointer_cast<NetworkInterfaceReceiveEvent>(pev))->message;
    // search message id in eventFuncMap
            multimap<int,eventFunc>::iterator im = eventFuncMap.find(message->type);
            if (im!=eventFuncMap.end()) {
                P2PNetworkInterface *recv_interface = message->destinationInterface;
                (*im).second(this,message,recv_interface);
            } else {
                OUTPUT << "ERROR: message Id #"<< message->type << " unknown!" << endl;
            }
        } break;
        case EVENT_ADD_NEIGHBOR: {
            OUTPUT << "ADD_NEIGHBOR" << endl;
            //startup();
        } break;
        case EVENT_TAP: {
			int face = (std::static_pointer_cast<TapEvent>(pev))->tappedFace;
            onTap(face);
        } break;
        case EVENT_ROTATION3D_END: {
#ifdef verbose
			info.str("");
			info << "rec.: EVENT_MOTION_END";
			scheduler->trace(info.str(),hostBlock->blockId);
#endif
            Catoms3DBlock*c3d = (Catoms3DBlock*)hostBlock;
            c3d->setPositionAndOrientation(c3d->position,c3d->orientationCode);
            onMotionEnd();
        }  break;
    }
}
コード例 #2
0
bool GalleryScroll::init(const ImageCallback &cb, const std::vector<std::string> &vec, size_t selected) {
	if (!Node::init()) {
		return false;
	}

	_imageCallback = cb;

	_overscrollTop = construct<Overscroll>(Overscroll::Top);
	_overscrollTop->setColor(material::Color::Grey_500);
	addChild(_overscrollTop, maxOf<int>() - 2);

	_overscrollBottom = construct<Overscroll>(Overscroll::Bottom);
	_overscrollBottom->setColor(material::Color::Grey_500);
	addChild(_overscrollBottom, maxOf<int>() - 2);

	_overscrollLeft = construct<Overscroll>(Overscroll::Left);
	_overscrollLeft->setColor(material::Color::Grey_500);
	addChild(_overscrollLeft, maxOf<int>() - 2);

	_overscrollRight = construct<Overscroll>(Overscroll::Right);
	_overscrollRight->setColor(material::Color::Grey_500);
	addChild(_overscrollRight, maxOf<int>() - 2);

	auto l = Rc<gesture::Listener>::create();
	l->setTouchFilter([this] (const Vec2 &loc, const gesture::Listener::DefaultTouchFilter &f) {
		return f(loc);
	});
	l->setTapCallback([this] (gesture::Event ev, const gesture::Tap &t) {
		if (_actionCallback) {
			_actionCallback(t.count==1?Tap:DoubleTap);
		}
		return onTap(t.location(), t.count);
	});
	l->setSwipeCallback([this] (gesture::Event ev, const gesture::Swipe &s) {
		auto density = screen::density();
		if (ev == stappler::gesture::Event::Began) {
			if (_actionCallback) {
				_actionCallback(Swipe);
			}
			return onSwipeBegin(s.location());
		} else if (ev == stappler::gesture::Event::Activated) {
			return onSwipe(cocos2d::Vec2(s.delta.x / density, s.delta.y / density));
		} else if (ev == stappler::gesture::Event::Ended) {
			return onSwipeEnd(cocos2d::Vec2(s.velocity.x / density, s.velocity.y / density));
		}
		return true;
	});
	l->setPinchCallback([this] (stappler::gesture::Event ev, const stappler::gesture::Pinch &p) {
		if (ev == stappler::gesture::Event::Began) {
			if (_actionCallback) {
				_actionCallback(Pinch);
			}
			_hasPinch = true;
		} else if (ev == stappler::gesture::Event::Activated) {
			_hasPinch = false;
			return onPinch(p.location(), p.scale, p.velocity, false);
		} else if (ev == stappler::gesture::Event::Ended || ev == stappler::gesture::Event::Cancelled) {
			_hasPinch = false;
			return onPinch(p.location(), p.scale, p.velocity, true);
		}
		return true;
	});
	addComponent(l);
	_gestureListener = l;

	_images = vec;

	reset(selected);

	return true;
}