本文整理汇总了C++中dispatchEvent函数的典型用法代码示例。如果您正苦于以下问题:C++ dispatchEvent函数的具体用法?C++ dispatchEvent怎么用?C++ dispatchEvent使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了dispatchEvent函数的18个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: dispatchEvent
void TransformGizmo::transformSelectedEntities(const Vector3 &move, const Vector3 &scale, Number rotate) {
if(firstMove) {
firstMove = false;
dispatchEvent(new TrasnformGizmoEvent(mode), Event::SELECT_EVENT);
}
Vector3 globalCenter = getConcatenatedMatrix().getPosition();
for(int i=0; i < selectedEntities.size(); i++) {
if((orientation == ORIENTATION_GLOBAL && mode != TRANSFORM_SCALE_VIEW) || (ORIENTATION_LOCAL && mode == TRANSFORM_MOVE_VIEW)) {
entityPositions[i] += move;
Quaternion q;
Quaternion currentRotation = selectedEntities[i]->getRotationQuat();
Vector3 axisVector = transformConstraint;
axisVector = currentRotation.Inverse().applyTo(axisVector);
axisVector.Normalize();
q.fromAngleAxis(rotate, axisVector);
Vector3 newScale = selectedEntities[i]->getRotationQuat().applyTo(scale);
newScale.x = fabs(newScale.x);
newScale.y = fabs(newScale.y);
newScale.z = fabs(newScale.z);
if(scale.x < 0 || scale.y < 0 || scale.z < 0) {
newScale = newScale * -1.0;
}
if(centerMode == CENTER_MODE_MEDIAN) {
Vector3 globalPosition = selectedEntities[i]->getConcatenatedMatrix().getPosition();
Quaternion tQ;
tQ.fromAngleAxis(rotate, transformConstraint);
Vector3 trans = globalCenter + tQ.applyTo(globalPosition-globalCenter) - globalPosition;
globalPosition += trans;
selectedEntities[i]->setPosition(globalPosition - selectedEntities[i]->getParentEntity()->getConcatenatedMatrix().getPosition());
selectedEntities[i]->setRotationByQuaternion(currentRotation * q);
if(move.length() == 0.0) {
entityPositions[i] = selectedEntities[i]->getPosition();
}
selectedEntities[i]->setScale(selectedEntities[i]->getScale() * (Vector3(1.0, 1.0, 1.0)+newScale));
if(newScale.length() > 0.0) {
Vector3 scalePosition;
scalePosition.x = globalPosition.x + ((globalPosition.x - globalCenter.x) * newScale.x);
scalePosition.y = globalPosition.y + ((globalPosition.y - globalCenter.y) * newScale.y);
scalePosition.z = globalPosition.z + ((globalPosition.z - globalCenter.z) * newScale.z);
scalePosition = selectedEntities[i]->getParentEntity()->getConcatenatedMatrix().Inverse().transpose() * scalePosition;
selectedEntities[i]->setPosition(scalePosition);
if(move.length() == 0.0) {
entityPositions[i] = selectedEntities[i]->getPosition();
}
}
} else {
selectedEntities[i]->setRotationByQuaternion(currentRotation * q);
selectedEntities[i]->setScale(selectedEntities[i]->getScale() * (Vector3(1.0, 1.0, 1.0)+newScale));
}
} else {
entityPositions[i] += getRotationQuat().applyTo(move);
Quaternion q;
Quaternion currentRotation = selectedEntities[i]->getRotationQuat();
Vector3 axisVector = transformConstraint;
// always global in the 2d view
if(gizmoMode != GIZMO_MODE_3D || mode == TRANSFORM_ROTATE_VIEW) {
axisVector = currentRotation.Inverse().applyTo(axisVector);
}
axisVector.Normalize();
q.fromAngleAxis(rotate, axisVector);
if(centerMode == CENTER_MODE_MEDIAN) {
Vector3 globalPosition = selectedEntities[i]->getConcatenatedMatrix().getPosition();
Quaternion tQ;
tQ.fromAngleAxis(rotate, getRotationQuat().applyTo(axisVector));
Vector3 trans = globalCenter + tQ.applyTo(globalPosition-globalCenter) - globalPosition;
globalPosition += trans;
selectedEntities[i]->setPosition(globalPosition - selectedEntities[i]->getParentEntity()->getConcatenatedMatrix().getPosition());
selectedEntities[i]->setRotationByQuaternion(currentRotation * q);
if(move.length() == 0.0) {
entityPositions[i] = selectedEntities[i]->getPosition();
}
selectedEntities[i]->setScale(selectedEntities[i]->getScale() * (Vector3(1.0, 1.0, 1.0)+scale));
if(scale.length() > 0.0) {
Vector3 scalePosition;
scalePosition.x = globalPosition.x + ((globalPosition.x - globalCenter.x) * scale.x);
scalePosition.y = globalPosition.y + ((globalPosition.y - globalCenter.y) * scale.y);
scalePosition.z = globalPosition.z + ((globalPosition.z - globalCenter.z) * scale.z);
scalePosition = selectedEntities[i]->getParentEntity()->getConcatenatedMatrix().Inverse().transpose() * scalePosition;
//.........这里部分代码省略.........
开发者ID:Anwesh43,项目名称:Polycode,代码行数:101,代码来源:TransformGizmo.cpp
示例2: updateBatteryStatus
void BatteryManager::didChangeBatteryStatus(Event& event, PassRefPtr<BatteryStatus> batteryStatus)
{
updateBatteryStatus(batteryStatus);
dispatchEvent(event);
}
开发者ID:edcwconan,项目名称:webkit,代码行数:5,代码来源:BatteryManager.cpp
示例3: dispatchEvent
void Notification::dispatchErrorEvent()
{
dispatchEvent(Event::create(EventTypeNames::error));
}
开发者ID:RobinWuDev,项目名称:Qt,代码行数:4,代码来源:Notification.cpp
示例4: android_main
/**
* This is the main entry point of a native application that is using
* android_native_app_glue. It runs in its own thread, with its own
* event loop for receiving input events and doing other things.
*/
void android_main(struct android_app* state) {
// Make sure glue isn't stripped.
app_dummy();
memset(&engine, 0, sizeof(engine));
state->userData = &engine;
state->onAppCmd = engine_handle_cmd;
state->onInputEvent = engine_handle_input;
state->inputPollSource.process = process_input;
engine.app = state;
// Prepare to monitor accelerometer
engine.sensorManager = ASensorManager_getInstance();
engine.accelerometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager,
ASENSOR_TYPE_ACCELEROMETER);
engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager,
state->looper, LOOPER_ID_USER, NULL, NULL);
if (state->savedState != NULL) {
// We are starting with a previous saved state; restore from it.
engine.state = *(struct saved_state*)state->savedState;
}
// Screen size change support
state->activity->callbacks->onContentRectChanged = onContentRectChanged;
// loop waiting for stuff to do.
while (1) {
// Read all pending events.
int ident;
int events;
struct android_poll_source* source;
// If not animating, we will block forever waiting for events.
// If animating, we loop until all events are read, then continue
// to draw the next frame of animation.
while ((ident=ALooper_pollAll(engine.animating ? 0 : -1, NULL, &events,
(void**)&source)) >= 0) {
// Process this event.
if (source != NULL) {
source->process(state, source);
}
// If a sensor has data, process it now.
if (ident == LOOPER_ID_USER) {
if (engine.accelerometerSensor != NULL) {
ASensorEvent event;
while (ASensorEventQueue_getEvents(engine.sensorEventQueue,
&event, 1) > 0) {
LOG_EVENTS_DEBUG("accelerometer: x=%f y=%f z=%f",
event.acceleration.x, event.acceleration.y,
event.acceleration.z);
AConfiguration* _currentconf = AConfiguration_new();
AConfiguration_fromAssetManager(_currentconf,
state->activity->assetManager);
static int32_t _orientation = AConfiguration_getOrientation(_currentconf);
if (ACONFIGURATION_ORIENTATION_LAND != _orientation) {
// ACONFIGURATION_ORIENTATION_ANY
// ACONFIGURATION_ORIENTATION_PORT
// ACONFIGURATION_ORIENTATION_SQUARE
cocos2d::Acceleration acc;
acc.x = -event.acceleration.x/10;
acc.y = -event.acceleration.y/10;
acc.z = event.acceleration.z/10;
acc.timestamp = 0;
cocos2d::EventAcceleration accEvent(acc);
auto dispatcher = cocos2d::Director::getInstance()->getEventDispatcher();
dispatcher->dispatchEvent(&accEvent);
} else {
// ACONFIGURATION_ORIENTATION_LAND
// swap x and y parameters
cocos2d::Acceleration acc;
acc.x = event.acceleration.y/10;
acc.y = -event.acceleration.x/10;
acc.z = event.acceleration.z/10;
acc.timestamp = 0;
cocos2d::EventAcceleration accEvent(acc);
auto dispatcher = cocos2d::Director::getInstance()->getEventDispatcher();
dispatcher->dispatchEvent(&accEvent);
}
}
}
}
// Check if we are exiting.
if (state->destroyRequested != 0) {
engine_term_display(&engine);
memset(&engine, 0, sizeof(engine));
//.........这里部分代码省略.........
开发者ID:Zaka,项目名称:yap,代码行数:101,代码来源:nativeactivity.cpp
示例5: getTimeMS
void SlidingActor::doUpdate(const UpdateState& us)
{
if (!_content)
return;
//static float ml = 0;
//ml = max(_speed.length(), ml);
//log::messageln("sp: %.2f", ml);
int ct = getTimeMS();
if (_lastIterTime + NUM * fdt < ct)
_lastIterTime = ct;
if (_drag.isDragging())
{
Vector2 pos = _content->getPosition();
//log::messageln("%d) pos %.2f %.2f", _current, pos.x, pos.y);
_prev[_current].pos = pos;
_prev[_current].tm = ct;
_current = (_current + 1) % NUM;
return;
}
if (_sliding)
{
const RectF& bounds = _drag.getDragBounds();
while (_lastIterTime + fdt <= ct)
{
Vector2 pos = _content->getPosition();
Vector2 newpos = pos + _speed * (fdt / 1000.0f);
if (newpos.x < bounds.getLeft())
{
newpos.x = bounds.getLeft();
_speed.x = 0;
}
else if (newpos.x > bounds.getRight())
{
newpos.x = bounds.getRight();
_speed.x = 0;
}
if (newpos.y < bounds.getTop())
{
newpos.y = bounds.getTop();
_speed.y = 0;
}
else if (newpos.y > bounds.getBottom())
{
newpos.y = bounds.getBottom();
_speed.y = 0;
}
_speed *= 0.97f;
_content->setPosition(newpos);
_lastIterTime += fdt;
}
SlidingEvent sl(SlidingEvent::SLIDING);
sl.speed = _speed;
dispatchEvent(&sl);
_speed = sl.speed;
if (_speed.sqlength() < 8)
{
_sliding = false;
SlidingEvent ev(SlidingEvent::END);
dispatchEvent(&ev);
}
}
}
开发者ID:HaoDongGuo,项目名称:oxygine-framework,代码行数:75,代码来源:SlidingActor.cpp
示例6: MutationEvent
void AbstractNode::dispatchAttrModified(Attr* pAttr, MutationEvent::AttrChangeType changeType, const XMLString& prevValue, const XMLString& newValue)
{
AutoPtr<MutationEvent> pEvent = new MutationEvent(_pOwner, MutationEvent::DOMAttrModified, this, true, false, pAttr, prevValue, newValue, pAttr->name(), changeType);
dispatchEvent(pEvent.get());
}
开发者ID:macchina-io,项目名称:macchina.io,代码行数:5,代码来源:AbstractNode.cpp
示例7: dispatchEvent
void EventSource::scheduleReconnect()
{
m_state = CONNECTING;
m_connectTimer.startOneShot(m_reconnectDelay / 1000.0, FROM_HERE);
dispatchEvent(Event::create(EventTypeNames::error));
}
开发者ID:alexanderbill,项目名称:blink-crosswalk,代码行数:6,代码来源:EventSource.cpp
示例8: dispatchEvent
void SVGScriptElement::dispatchLoadEvent()
{
dispatchEvent(Event::create(EventTypeNames::load));
}
开发者ID:endlessm,项目名称:chromium-browser,代码行数:4,代码来源:SVGScriptElement.cpp
示例9: dispatchEvent
void FileReader::fireEvent(const AtomicString& type)
{
dispatchEvent(ProgressEvent::create(type, true, m_loader ? m_loader->bytesLoaded() : 0, m_loader ? m_loader->totalBytes() : 0));
}
开发者ID:josedealcala,项目名称:webkit,代码行数:4,代码来源:FileReader.cpp
示例10: callback
void callback(int type, void *event)
{
dispatchEvent(type, event);
}
开发者ID:Nlcke,项目名称:gideros,代码行数:4,代码来源:gmsbinder.cpp
示例11: dispatchEvent
void Performance::webkitSetResourceTimingBufferSize(unsigned size)
{
m_resourceTimingBufferSize = size;
if (isResourceTimingBufferFull())
dispatchEvent(Event::create(eventNames().webkitresourcetimingbufferfullEvent, false, false));
}
开发者ID:Channely,项目名称:know-your-chrome,代码行数:6,代码来源:Performance.cpp
示例12: dispatchEvent
void WebNotification::dispatchErrorEvent(const WebKit::WebString& /* errorMessage */)
{
// FIXME: errorMessage not supported by WebCore yet
dispatchEvent(eventNames().errorEvent);
}
开发者ID:rgabor-dev,项目名称:webkitnix,代码行数:5,代码来源:WebNotification.cpp
示例13: gestureIndicator
void Notification::dispatchClickEvent()
{
UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
WindowFocusAllowedIndicator windowFocusAllowed;
dispatchEvent(Event::create(EventTypeNames::click));
}
开发者ID:RobinWuDev,项目名称:Qt,代码行数:6,代码来源:Notification.cpp
示例14: gestureIndicator
void WebNotification::dispatchClickEvent()
{
UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture);
WindowFocusAllowedIndicator windowFocusAllowed;
dispatchEvent(eventNames().clickEvent);
}
开发者ID:rgabor-dev,项目名称:webkitnix,代码行数:6,代码来源:WebNotification.cpp
示例15: Touch
void TouchEventDispatchingPerfTest::generateTestFunctions()
{
TestFunction testFunctions[] = {
{ "OneByOne-scenegraph", [=](){
auto dispatcher = Director::getInstance()->getEventDispatcher();
if (_quantityOfNodes != _lastRenderedCount)
{
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [](Touch* touch, Event* event){
return false;
};
listener->onTouchMoved = [](Touch* touch, Event* event){};
listener->onTouchEnded = [](Touch* touch, Event* event){};
// Create new touchable nodes
for (int i = 0; i < this->_quantityOfNodes; ++i)
{
auto node = Node::create();
node->setTag(1000 + i);
this->addChild(node);
this->_nodes.push_back(node);
dispatcher->addEventListenerWithSceneGraphPriority(listener->clone(), node);
}
_lastRenderedCount = _quantityOfNodes;
}
Size size = Director::getInstance()->getWinSize();
EventTouch touchEvent;
touchEvent.setEventCode(EventTouch::EventCode::BEGAN);
std::vector<Touch*> touches;
for (int i = 0; i < 4; ++i)
{
Touch* touch = new Touch();
touch->autorelease();
touch->setTouchInfo(i, rand() % 200, rand() % 200);
touches.push_back(touch);
}
touchEvent.setTouches(touches);
CC_PROFILER_START(this->profilerName());
dispatcher->dispatchEvent(&touchEvent);
CC_PROFILER_STOP(this->profilerName());
} } ,
{ "OneByOne-fixed", [=](){
auto dispatcher = Director::getInstance()->getEventDispatcher();
if (_quantityOfNodes != _lastRenderedCount)
{
auto listener = EventListenerTouchOneByOne::create();
listener->onTouchBegan = [](Touch* touch, Event* event){
return false;
};
listener->onTouchMoved = [](Touch* touch, Event* event){};
listener->onTouchEnded = [](Touch* touch, Event* event){};
for (int i = 0; i < this->_quantityOfNodes; ++i)
{
auto l = listener->clone();
this->_fixedPriorityListeners.push_back(l);
dispatcher->addEventListenerWithFixedPriority(l, i+1);
}
_lastRenderedCount = _quantityOfNodes;
}
Size size = Director::getInstance()->getWinSize();
EventTouch touchEvent;
touchEvent.setEventCode(EventTouch::EventCode::BEGAN);
std::vector<Touch*> touches;
for (int i = 0; i < 4; ++i)
{
Touch* touch = new Touch();
touch->autorelease();
touch->setTouchInfo(i, rand() % 200, rand() % 200);
touches.push_back(touch);
}
touchEvent.setTouches(touches);
CC_PROFILER_START(this->profilerName());
dispatcher->dispatchEvent(&touchEvent);
CC_PROFILER_STOP(this->profilerName());
} } ,
{ "AllAtOnce-scenegraph", [=](){
auto dispatcher = Director::getInstance()->getEventDispatcher();
if (_quantityOfNodes != _lastRenderedCount)
{
auto listener = EventListenerTouchAllAtOnce::create();
listener->onTouchesBegan = [](const std::vector<Touch*> touches, Event* event){};
listener->onTouchesMoved = [](const std::vector<Touch*> touches, Event* event){};
listener->onTouchesEnded = [](const std::vector<Touch*> touches, Event* event){};
// Create new touchable nodes
for (int i = 0; i < this->_quantityOfNodes; ++i)
{
//.........这里部分代码省略.........
开发者ID:TinySlik,项目名称:cocos2d-x-3.x-Qt,代码行数:101,代码来源:PerformanceEventDispatcherTest.cpp
示例16: event
void KeyboardEventDispatchingPerfTest::generateTestFunctions()
{
TestFunction testFunctions[] = {
{ "keyboard-scenegraph", [=](){
auto dispatcher = Director::getInstance()->getEventDispatcher();
if (_quantityOfNodes != _lastRenderedCount)
{
auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event){};
listener->onKeyReleased = [](EventKeyboard::KeyCode keyCode, Event* event){};
// Create new nodes listen to keyboard event
for (int i = 0; i < this->_quantityOfNodes; ++i)
{
auto node = Node::create();
node->setTag(1000 + i);
this->addChild(node);
this->_nodes.push_back(node);
dispatcher->addEventListenerWithSceneGraphPriority(listener->clone(), node);
}
_lastRenderedCount = _quantityOfNodes;
}
EventKeyboard event(EventKeyboard::KeyCode::KEY_RETURN, true);
CC_PROFILER_START(this->profilerName());
dispatcher->dispatchEvent(&event);
CC_PROFILER_STOP(this->profilerName());
} } ,
{ "keyboard-fixed", [=](){
auto dispatcher = Director::getInstance()->getEventDispatcher();
if (_quantityOfNodes != _lastRenderedCount)
{
auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event){};
listener->onKeyReleased = [](EventKeyboard::KeyCode keyCode, Event* event){};
for (int i = 0; i < this->_quantityOfNodes; ++i)
{
auto l = listener->clone();
this->_fixedPriorityListeners.push_back(l);
dispatcher->addEventListenerWithFixedPriority(l, i+1);
}
_lastRenderedCount = _quantityOfNodes;
}
EventKeyboard event(EventKeyboard::KeyCode::KEY_RETURN, true);
CC_PROFILER_START(this->profilerName());
dispatcher->dispatchEvent(&event);
CC_PROFILER_STOP(this->profilerName());
} } ,
};
for (const auto& func : testFunctions)
{
_testFunctions.push_back(func);
}
}
开发者ID:TinySlik,项目名称:cocos2d-x-3.x-Qt,代码行数:62,代码来源:PerformanceEventDispatcherTest.cpp
示例17: dispatchEvent
void Performance::webkitSetResourceTimingBufferSize(unsigned size)
{
m_resourceTimingBufferSize = size;
if (isResourceTimingBufferFull())
dispatchEvent(Event::create(EventTypeNames::webkitresourcetimingbufferfull));
}
开发者ID:junmin-zhu,项目名称:blink-crosswalk,代码行数:6,代码来源:Performance.cpp
示例18: dispatchEvent
void Notification::dispatchErrorEvent()
{
dispatchEvent(Event::create(eventNames().errorEvent, false, false));
}
开发者ID:166MMX,项目名称:openjdk.java.net-openjfx-8u40-rt,代码行数:4,代码来源:Notification.cpp
注:本文中的dispatchEvent函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论