XBool XAudioStream::getAFrame() //从流中提取一帧数据 { if(!m_isLoaded) return XFalse; av_free_packet(&m_dataPacket); //释放上一次获得的数据 av_init_packet(&m_dataPacket); if(av_read_frame(m_pFormatCtx,&m_dataPacket) == 0) {//这里见音频数据解码 m_pFrame = av_frame_alloc(); int isFinished; if(avcodec_decode_audio4(m_pAudioCodecCtx,m_pFrame,&isFinished,&m_dataPacket) < 0) return XFalse; if(isFinished) { uint8_t *out[] = {m_audioBuf}; int outSize = ((AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2) / m_frameDataSum; m_dataLen = swr_convert(m_pSwrContext,out,outSize,(const uint8_t **)m_pFrame->extended_data,m_pFrame->nb_samples); m_dataLen = m_dataLen * m_frameDataSum; av_frame_free(&m_pFrame); return XTrue;//解码成功 } av_frame_free(&m_pFrame); }else { gotoFrame(0.0f); //跳到头 LogStr("File end!"); return XFalse; } return XFalse; }
void ActionTimeline::gotoFrameAndPause(int startIndex) { _startFrame = _currentFrame = startIndex; _time = _currentFrame * _frameInternal; pause(); gotoFrame(_currentFrame); }
void ActionTimeline::gotoFrameAndPlay(int startIndex, int endIndex, int currentFrameIndex, bool loop) { _startFrame = startIndex; _endFrame = endIndex; _currentFrame = currentFrameIndex; _loop = loop; _time = _currentFrame*_frameInternal; resume(); gotoFrame(_currentFrame); }
void Hero::onSpellCasted(GameEventPointer e, EventDispatcher* dispatcher) { if (m_spell) { gotoFrame(0); dispatchEvent(e, dispatcher); if (m_spell->parent()) { m_spell->parent()->removeChild(m_spell); } m_spell = NULL; } }
void Hero::onEvent(const Event& e) { if (e.event_type == EventType::MouseDown) { int x = floor((e.mouse_data.x - m_parent->x()) / m_context.TILE_SIZE); int y = floor((e.mouse_data.y - m_parent->y()) / m_context.TILE_SIZE); if (m_state == State::Spell && m_spell) { m_spell->addEventListener(ET::spell, this, static_cast<Listener>(&Hero::onSpellCasted)); m_spell->cast(point(m_x / m_context.TILE_SIZE, m_y / m_context.TILE_SIZE), point(x, y)); m_state = State::Stand; gotoFrame(1, 1); } } else if (e.event_type == EventType::MouseMoved) { int x = floor((e.mouse_data.x - m_parent->x()) / m_context.TILE_SIZE); int y = floor((e.mouse_data.y - m_parent->y()) / m_context.TILE_SIZE); if (m_state == State::Stand) { drawPath(x, y); } if (m_state == State::Spell) { m_spell->onEvent(e); } } }
int gotoMsec(unsigned long msec) { int ret; ret = gotoFrame(framesFromMSec(msec)); return ret; }
//-------------------------------------------------------------- bool Sprite::processOscMessage(const ofxOscMessage& message) { // call the base class if(DrawableObject::processOscMessage(message)) { return true; } if(message.getAddress() == oscRootAddress + "/position") { tryNumber(message, pos.x, 0); tryNumber(message, pos.y, 1); return true; } else if(message.getAddress() == oscRootAddress + "/position/x") { tryNumber(message, pos.x, 0); return true; } else if(message.getAddress() == oscRootAddress + "/position/y") { tryNumber(message, pos.y, 0); return true; } else if(message.getAddress() == oscRootAddress + "/size") { tryNumber(message, width, 0); tryNumber(message, height, 1); resizeIfNecessary(); return true; } else if(message.getAddress() == oscRootAddress + "/size/width") { tryNumber(message, width, 0); resizeIfNecessary(); return true; } else if(message.getAddress() == oscRootAddress + "/size/height") { tryNumber(message, height, 0); resizeIfNecessary(); return true; } else if(message.getAddress() == oscRootAddress + "/frame") { unsigned int frame = 0; tryNumber(message, frame, 0); gotoFrame(frame); return true; } else if(message.getAddress() == oscRootAddress + "/animate") { tryBool(message, bAnimate, 0); return true; } else if(message.getAddress() == oscRootAddress + "/loop") { tryBool(message, bLoop, 0); return true; } else if(message.getAddress() == oscRootAddress + "/pingpong") { tryBool(message, bPingPong, 0); return true; } else if(message.getAddress() == oscRootAddress + "/center") { bool b = bDrawFromCenter; if(tryBool(message, b, 0)) { setDrawFromCenter(b); } return true; } else if(message.getAddress() == oscRootAddress + "/overlay") { tryBool(message, bDrawAllLayers, 0); return true; } return false; }
void MovieClip::gotoAndStop(int frame) { gotoFrame(frame); stop(); }
void MovieClip::gotoAndPlay(int frame) { gotoFrame(frame); play(); }
void MovieClip::oneFrame() { if (!playing_) { return; } if (passoneframe_ == true) { passoneframe_ = false; return; } std::map<int, int>::iterator iter2 = actions_.find(frame_); if (iter2 != actions_.end()) { if (iter2->second == -1) { stop(); CompleteEvent event(CompleteEvent::COMPLETE); dispatchEvent(&event); } else gotoFrame(iter2->second); return; } if (frame_ == maxframe_) { stop(); CompleteEvent event(CompleteEvent::COMPLETE); dispatchEvent(&event); return; } std::map<int, std::vector<Frame*> >::iterator iter; iter = activeFrames_.find(frame_); if (iter != activeFrames_.end()) { const std::vector<Frame*>& frames = iter->second; for (std::size_t i = 0; i < frames.size(); ++i) removeChild2(frames[i]->sprite); activeFrames_.erase(iter); } frame_ = frame_ + 1; iter = allFrames_.find(frame_); if (iter != allFrames_.end()) { const std::vector<Frame*>& frames = iter->second; for (std::size_t i = 0; i < frames.size(); ++i) { activeFrames_[frames[i]->end].push_back(frames[i]); addChild2(frames[i]->sprite); } } interpolateParameters(); }
void ViewerSettingsPanelCamera::on_lastScanButton_clicked(){ gotoFrame(m_numberFrames); }
void ViewerSettingsPanelCamera::on_firstScanButton_clicked(){ gotoFrame(1); }
void ViewerSettingsPanelCamera::on_previousScanButton_clicked(){ gotoFrame(m_currentFrame - 1); }
void ViewerSettingsPanelCamera::on_nextScanButton_clicked(){ gotoFrame(m_currentFrame + 1); }
void ViewerSettingsPanelCamera::on_scanProgressSlider_sliderMoved(int value) { gotoFrame(value); }