221 auto ret = AudioEngineTestDemo::init();
222 _audioID = AudioEngine::INVALID_AUDIO_ID;
230 std::string fontFilePath =
"fonts/arial.ttf";
232 auto& layerSize = this->getContentSize();
234 _playOverLabel = Label::createWithSystemFont(
"Play Over",
"", 30);
239 auto playItem = TextButton::create(
"play", [&](TextButton* button){
240 if (
_audioID == AudioEngine::INVALID_AUDIO_ID) {
243 if(
_audioID != AudioEngine::INVALID_AUDIO_ID) {
246 button->setEnabled(
false);
247 AudioEngine::setFinishCallback(
_audioID, [&](
int id,
const std::string& filePath){
252 scheduleOnce([&](
float dt){
254 }, 2.0f,
"hide_play_over_label");
257 _audioID = AudioEngine::INVALID_AUDIO_ID;
258 ((TextButton*)
_playItem)->setEnabled(
true);
267 playItem->setPosition(layerSize.width * 0.3f,layerSize.height * 0.8f);
270 auto stopItem = TextButton::create(
"stop", [&](TextButton* button){
271 if (
_audioID != AudioEngine::INVALID_AUDIO_ID ) {
275 _audioID = AudioEngine::INVALID_AUDIO_ID;
276 ((TextButton*)
_playItem)->setEnabled(
true);
279 stopItem->setPosition(layerSize.width * 0.7f,layerSize.height * 0.8f);
282 auto pauseItem = TextButton::create(
"pause", [&](TextButton* button){
283 if (
_audioID != AudioEngine::INVALID_AUDIO_ID ) {
287 pauseItem->setPosition(layerSize.width * 0.3f,layerSize.height * 0.7f);
290 auto resumeItem = TextButton::create(
"resume", [&](TextButton* button){
291 if (
_audioID != AudioEngine::INVALID_AUDIO_ID ) {
295 resumeItem->setPosition(layerSize.width * 0.7f,layerSize.height * 0.7f);
296 addChild(resumeItem);
298 auto loopItem = TextButton::create(
"enable-loop", [&](TextButton* button){
301 if (
_audioID != AudioEngine::INVALID_AUDIO_ID) {
305 button->setString(
"disable-loop");
308 button->setString(
"enable-loop");
311 loopItem->setPosition(layerSize.width * 0.5f, layerSize.height * 0.5f);
314 auto volumeSlider = SliderEx::create();
315 volumeSlider->setPercent(100);
316 volumeSlider->addEventListener([&](Ref* sender, Slider::EventType event){
317 SliderEx *slider =
dynamic_cast<SliderEx *
>(sender);
319 if (
_audioID != AudioEngine::INVALID_AUDIO_ID ) {
323 volumeSlider->setPosition(Vec2(layerSize.width * 0.5f,layerSize.height * 0.35f));
324 addChild(volumeSlider);
326 auto timeSlider = SliderEx::create();
327 timeSlider->addEventListener([&](Ref* sender, Slider::EventType event){
328 SliderEx *slider =
dynamic_cast<SliderEx *
>(sender);
330 case Slider::EventType::ON_SLIDEBALL_DOWN:
333 case Slider::EventType::ON_SLIDEBALL_UP:
334 if (
_audioID != AudioEngine::INVALID_AUDIO_ID &&
_duration != AudioEngine::TIME_UNKNOWN) {
335 float ratio = (float)slider->getPercent() / 100;
336 ratio = clampf(ratio, 0.0f, 1.0f);
339 case Slider::EventType::ON_SLIDEBALL_CANCEL:
341 case Slider::EventType::ON_PERCENTAGE_CHANGED:
347 timeSlider->setPosition(Vec2(layerSize.width * 0.5f,layerSize.height * 0.25f));
348 addChild(timeSlider);
351 auto& volumeSliderPos = volumeSlider->getPosition();
352 auto& sliderSize = volumeSlider->getContentSize();
353 auto volumeLabel = Label::createWithTTF(
"volume: ", fontFilePath, 20);
354 volumeLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
355 volumeLabel->setPosition(volumeSliderPos.x - sliderSize.width / 2, volumeSliderPos.y);
356 addChild(volumeLabel);
358 auto& timeSliderPos = timeSlider->getPosition();
359 auto timeLabel = Label::createWithTTF(
"time: ", fontFilePath, 20);
360 timeLabel->setAnchorPoint(Vec2::ANCHOR_MIDDLE_RIGHT);
361 timeLabel->setPosition(timeSliderPos.x - sliderSize.width / 2, timeSliderPos.y);
virtual void update(float dt) override
cocos2d::Label * _playOverLabel