From d64ac9fdb8b1643c89c75e9043e674b1622d804b Mon Sep 17 00:00:00 2001 From: minggo Date: Wed, 19 Jan 2011 16:00:19 +0800 Subject: [PATCH 1/9] issue #311: cocosdenshion for android --- CocosDenshion/android/Android.mk | 5 +- CocosDenshion/android/SimpleAudioEngine.cpp | 3 +- .../android/jni/SimpleAudioEngineJni.cpp | 77 +++++++++ .../android/jni/SimpleAudioEngineJni.h | 11 ++ cocos2d-win32.sln | 1 + tests/test.android/build_native.sh | 15 +- tests/test.android/jni/Android.mk | 3 +- tests/test.android/jni/tests/Android.mk | 10 +- .../org/cocos2dx/lib/Cocos2dxActivity.java | 17 +- .../src/org/cocos2dx/lib/Cocos2dxMusic.java | 128 +++++++++++++++ .../src/org/cocos2dx/lib/Cocos2dxSound.java | 94 +++++++++++ .../src/org/cocos2dx/tests/TestsDemo.java | 10 +- tests/test.uphone/test.uphone.vcproj | 12 ++ tests/test.win32/test.win32.vcproj | 16 +- .../CocosDenshionTest/CocosDenshionTest.cpp | 149 ++++++++++++++++++ .../CocosDenshionTest/CocosDenshionTest.h | 29 ++++ tests/tests/controller.cpp | 2 + tests/tests/tests.h | 3 + 18 files changed, 565 insertions(+), 20 deletions(-) create mode 100644 CocosDenshion/android/jni/SimpleAudioEngineJni.cpp create mode 100644 CocosDenshion/android/jni/SimpleAudioEngineJni.h create mode 100644 tests/test.android/src/org/cocos2dx/lib/Cocos2dxMusic.java create mode 100644 tests/test.android/src/org/cocos2dx/lib/Cocos2dxSound.java create mode 100644 tests/tests/CocosDenshionTest/CocosDenshionTest.cpp create mode 100644 tests/tests/CocosDenshionTest/CocosDenshionTest.h diff --git a/CocosDenshion/android/Android.mk b/CocosDenshion/android/Android.mk index 938afc61f3..93ef096973 100644 --- a/CocosDenshion/android/Android.mk +++ b/CocosDenshion/android/Android.mk @@ -2,9 +2,12 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := cocosdenshion -LOCAL_SRC_FILES := SimpleAudioEngine.cpp +LOCAL_SRC_FILES := SimpleAudioEngine.cpp \ +jni/SimpleAudioEngineJni.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/../include +LOCAL_LDLIBS := -llog + include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/CocosDenshion/android/SimpleAudioEngine.cpp b/CocosDenshion/android/SimpleAudioEngine.cpp index 8767aa65d2..25c2943335 100644 --- a/CocosDenshion/android/SimpleAudioEngine.cpp +++ b/CocosDenshion/android/SimpleAudioEngine.cpp @@ -23,6 +23,7 @@ THE SOFTWARE. ****************************************************************************/ #include "SimpleAudioEngine.h" +#include "jni/SimpleAudioEngineJni.h" namespace CocosDenshion { @@ -70,7 +71,7 @@ namespace CocosDenshion void SimpleAudioEngine::playBackgroundMusic(const char* pszFilePath, bool bLoop) { - + playBackgroundMusicJNI(pszFilePath, bLoop); } void SimpleAudioEngine::stopBackgroundMusic(bool bReleaseData) diff --git a/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp b/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp new file mode 100644 index 0000000000..95df0dc69e --- /dev/null +++ b/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp @@ -0,0 +1,77 @@ +#include "SimpleAudioEngineJni.h" +#include + +#define LOG_TAG "libSimpleAudioEngine" +#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) +#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) + +extern "C" +{ + static JavaVM *gJavaVM = 0; + static jclass classOfCocos2dxActivity = 0; + JNIEnv *env = 0; + + jint JNI_OnLoad(JavaVM *vm, void *reserved) + { + gJavaVM = vm; + + LOGI("JNI_OnLoad"); + + LOGI("JNI_OnLoad ok"); + + return JNI_VERSION_1_4; + } + + static jmethodID getMethodID(const char *methodName, const char *paramCode) + { + jmethodID ret = 0; + + LOGI("getMethodID"); + + // get jni environment and java class for Cocos2dxActivity + if (gJavaVM->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK) + { + LOGE("Failed to get the environment using GetEnv()"); + return 0; + } + + if (gJavaVM->AttachCurrentThread(&env, 0) < 0) + { + LOGE("Failed to get the environment using AttachCurrentThread()"); + return 0; + } + + classOfCocos2dxActivity = env->FindClass("org/cocos2dx/lib/Cocos2dxActivity"); + if (! classOfCocos2dxActivity) + { + LOGE("Failed to find class of org/cocos2dx/lib/Cocos2dxActivity"); + return 0; + } + + if (env != 0 && classOfCocos2dxActivity != 0) + { + ret = env->GetStaticMethodID(classOfCocos2dxActivity, methodName, paramCode); + LOGI("after GetStaticMethodID"); + } + + if (ret) + { + LOGI("get method id of %s ok", methodName); + } + + return ret; + } + + void playBackgroundMusicJNI(const char *path, bool isLoop) + { + // void playBackgroundMusic(String,boolean) + jmethodID playBackgroundMusicMethodID = getMethodID("playBackgroundMusic", "(Ljava/lang/String;Z)V"); + + if (playBackgroundMusicMethodID) + { + jstring StringArg = env->NewStringUTF(path); + env->CallStaticVoidMethod(classOfCocos2dxActivity, playBackgroundMusicMethodID, StringArg, isLoop); + //env->ReleaseStringUTFChars(StringArg, path); + } + } +} diff --git a/CocosDenshion/android/jni/SimpleAudioEngineJni.h b/CocosDenshion/android/jni/SimpleAudioEngineJni.h new file mode 100644 index 0000000000..01ea6b40c5 --- /dev/null +++ b/CocosDenshion/android/jni/SimpleAudioEngineJni.h @@ -0,0 +1,11 @@ +#ifndef __SIMPLE_AUDIO_ENGINE_JNI__ +#define __SIMPLE_AUDIO_ENGINE_JNI__ + +#include + +extern "C" +{ + extern void playBackgroundMusicJNI(const char *path, bool isLoop); +} + +#endif // __SIMPLE_AUDIO_ENGINE_JNI__ \ No newline at end of file diff --git a/cocos2d-win32.sln b/cocos2d-win32.sln index 6b6505797d..f65205a244 100644 --- a/cocos2d-win32.sln +++ b/cocos2d-win32.sln @@ -24,6 +24,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "tests\test.win32\t {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} = {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} {207BC7A9-CCF1-4F2F-A04D-45F72242AE25} = {207BC7A9-CCF1-4F2F-A04D-45F72242AE25} {929480E7-23C0-4DF6-8456-096D71547116} = {929480E7-23C0-4DF6-8456-096D71547116} + {F8EDD7FA-9A51-4E80-BAEB-860825D2EAC6} = {F8EDD7FA-9A51-4E80-BAEB-860825D2EAC6} EndProjectSection EndProject Global diff --git a/tests/test.android/build_native.sh b/tests/test.android/build_native.sh index 9e1d367a45..c194d4eb8c 100644 --- a/tests/test.android/build_native.sh +++ b/tests/test.android/build_native.sh @@ -1,19 +1,24 @@ # set params ANDROID_NDK_ROOT=/cygdrive/e/android-ndk-r4-crystax COCOS2DX_ROOT=/cygdrive/d/Work7/cocos2d-x - -# copy resources - TESTS_ROOT=$COCOS2DX_ROOT/tests/test.android -if [ -d $TESTS_ROOT/assets ]; then +# make sure assets is exist +if [ ! -d $TESTS_ROOT/assets ]; then + mkdir $TESTS_ROOT/assets +fi + +# copy resources +if [ -d $TESTS_ROOT/assets/animations ]; then echo "resources already exist" else - mkdir $TESTS_ROOT/assets cp -R $COCOS2DX_ROOT/tests/Res/animations $TESTS_ROOT/assets cp -R $COCOS2DX_ROOT/tests/Res/fonts $TESTS_ROOT/assets cp -R $COCOS2DX_ROOT/tests/Res/Images $TESTS_ROOT/assets cp -R $COCOS2DX_ROOT/tests/Res/TileMaps $TESTS_ROOT/assets + cp $COCOS2DX_ROOT/tests/Res/effect1.wav $TESTS_ROOT/assets + cp $COCOS2DX_ROOT/tests/Res/effect2.wav $TESTS_ROOT/assets + cp $COCOS2DX_ROOT/tests/Res/music.mid $TESTS_ROOT/assets fi diff --git a/tests/test.android/jni/Android.mk b/tests/test.android/jni/Android.mk index 46303215db..e379e52673 100644 --- a/tests/test.android/jni/Android.mk +++ b/tests/test.android/jni/Android.mk @@ -4,7 +4,8 @@ include $(CLEAR_VARS) subdirs := $(addprefix $(LOCAL_PATH)/../../../,$(addsuffix /Android.mk, \ Box2D \ chipmunk \ - cocos2dx \ + cocos2dx \ + CocosDenshion/Android \ )) subdirs += $(LOCAL_PATH)/tests/Android.mk diff --git a/tests/test.android/jni/tests/Android.mk b/tests/test.android/jni/tests/Android.mk index 78a7af9080..e36b937bb3 100644 --- a/tests/test.android/jni/tests/Android.mk +++ b/tests/test.android/jni/tests/Android.mk @@ -59,19 +59,21 @@ LOCAL_SRC_FILES := tests.cpp \ ../../../tests/TransitionsTest/TransitionsTest.cpp \ ../../../tests/controller.cpp \ ../../../tests/testBasic.cpp \ -../../../AppDelegate.cpp +../../../AppDelegate.cpp \ +../../../tests/CocosDenshionTest/CocosDenshionTest.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../cocos2dx \ $(LOCAL_PATH)/../../../../cocos2dx/include \ $(LOCAL_PATH)/../../../tests \ $(LOCAL_PATH)/../../../.. \ $(LOCAL_PATH)/../../.. \ - $(LOCAL_PATH)/../../../../chipmunk/include/chipmunk + $(LOCAL_PATH)/../../../../chipmunk/include/chipmunk \ + $(LOCAL_PATH)/../../../../CocosDenshion/include # it is used for ndk-r4 LOCAL_LDLIBS := -L$(LOCAL_PATH)/../../libs/armeabi \ -lGLESv1_CM \ - -lcocos2d -llog \ + -lcocos2d -lcocosdenshion -llog \ -lbox2d -lchipmunk # it is used for ndk-r5 @@ -79,7 +81,7 @@ LOCAL_LDLIBS := -L$(LOCAL_PATH)/../../libs/armeabi \ # mapping (i.e /cygdrive/c/ instead of C:/) #LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../../libs/armeabi) \ # -lGLESv1_CM \ -# -lcocos2d -llog \ +# -lcocos2d -llog -lcocosdenshion \ # -lbox2d -lchipmunk include $(BUILD_SHARED_LIBRARY) diff --git a/tests/test.android/src/org/cocos2dx/lib/Cocos2dxActivity.java b/tests/test.android/src/org/cocos2dx/lib/Cocos2dxActivity.java index 1f9c169d1c..f49b0e3842 100644 --- a/tests/test.android/src/org/cocos2dx/lib/Cocos2dxActivity.java +++ b/tests/test.android/src/org/cocos2dx/lib/Cocos2dxActivity.java @@ -51,6 +51,11 @@ import android.util.DisplayMetrics; import android.util.Log; public class Cocos2dxActivity extends Activity{ + public static int screenWidth; + public static int screenHeight; + private static Cocos2dxMusic backgroundMusicPlayer; + private static Cocos2dxSound soundPlayer; + private static native void nativeSetPaths(String apkPath); @Override protected void onCreate(Bundle savedInstanceState) { @@ -61,6 +66,14 @@ public class Cocos2dxActivity extends Activity{ getWindowManager().getDefaultDisplay().getMetrics(dm); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; + + // init media player and sound player + backgroundMusicPlayer = new Cocos2dxMusic(getApplicationContext()); + soundPlayer = new Cocos2dxSound(getApplicationContext()); + } + + public static void playBackgroundMusic(String path, boolean isLoop){ + backgroundMusicPlayer.playBackgroundMusic(path, isLoop); } protected void setPackgeName(String packageName) { @@ -79,8 +92,4 @@ public class Cocos2dxActivity extends Activity{ // add this link at the renderer class nativeSetPaths(apkFilePath); } - - public static int screenWidth; - public static int screenHeight; - private static native void nativeSetPaths(String apkPath); } diff --git a/tests/test.android/src/org/cocos2dx/lib/Cocos2dxMusic.java b/tests/test.android/src/org/cocos2dx/lib/Cocos2dxMusic.java new file mode 100644 index 0000000000..6f596f50f8 --- /dev/null +++ b/tests/test.android/src/org/cocos2dx/lib/Cocos2dxMusic.java @@ -0,0 +1,128 @@ +package org.cocos2dx.lib; + +import android.content.Context; +import android.content.res.AssetFileDescriptor; +import android.media.MediaPlayer; +import android.util.Log; + +/** + * + * This class is used for controlling background music + * + */ +public class Cocos2dxMusic { + + private static final String TAG = "Cocos2dxMusic"; + private Context context; + private MediaPlayer mBackgroundMediaPlayer; + + public Cocos2dxMusic(Context context){ + this.context = context; + mBackgroundMediaPlayer = null; + } + + public void playBackgroundMusic(String path, boolean isLoop){ + if (mBackgroundMediaPlayer == null){ + mBackgroundMediaPlayer = createMediaplayerFromAssets(path); + } + + if (mBackgroundMediaPlayer == null){ + Log.e(TAG, "playBackgroundMusic: background media player is null"); + } else{ + // if the music is playing or paused, stop it + mBackgroundMediaPlayer.stop(); + + mBackgroundMediaPlayer.setLooping(isLoop); + + try { + mBackgroundMediaPlayer.prepare(); + mBackgroundMediaPlayer.start(); + } catch (Exception e){ + Log.e(TAG, "playBackgroundMusic: error state"); + } + } + } + + public void stopBackgroundMusic(){ + assert(mBackgroundMediaPlayer != null); + + if (mBackgroundMediaPlayer != null){ + mBackgroundMediaPlayer.stop(); + } + } + + public void pauseBackgroundMusic(){ + assert(mBackgroundMediaPlayer != null); + + if (mBackgroundMediaPlayer != null){ + mBackgroundMediaPlayer.pause(); + } + } + + public void resumeBackgroundMusic(){ + assert(mBackgroundMediaPlayer != null); + + if (mBackgroundMediaPlayer != null){ + mBackgroundMediaPlayer.start(); + } + } + + public void rewindBackgroundMusic(){ + assert(mBackgroundMediaPlayer != null); + + if (mBackgroundMediaPlayer != null){ + mBackgroundMediaPlayer.stop(); + + try { + mBackgroundMediaPlayer.prepare(); + mBackgroundMediaPlayer.start(); + } catch (Exception e){ + Log.e(TAG, "rewindBackgroundMusic: error state"); + } + } + } + + public boolean isBackgroundMusicPlaying(){ + boolean ret = false; + + if (mBackgroundMediaPlayer == null){ + ret = false; + } else { + ret = mBackgroundMediaPlayer.isPlaying(); + } + + return ret; + } + + + /* + public int getBackgroundVolume(){ + + } + + public void setBackgroundVolume(int volume){ + + } + */ + + /** + * create mediaplayer for music + * @param path the path relative to assets + * @return + */ + private MediaPlayer createMediaplayerFromAssets(String path){ + MediaPlayer mediaPlayer = null; + + try{ + mediaPlayer = new MediaPlayer(); + AssetFileDescriptor assetFileDescritor = context.getAssets().openFd(path); + mediaPlayer.setDataSource(assetFileDescritor.getFileDescriptor(), + assetFileDescritor.getStartOffset(), assetFileDescritor.getLength()); + mediaPlayer.prepare(); + }catch (Exception e) { + Log.e(TAG, "error: " + e.getMessage(), e); + } + + return mediaPlayer; + } +} diff --git a/tests/test.android/src/org/cocos2dx/lib/Cocos2dxSound.java b/tests/test.android/src/org/cocos2dx/lib/Cocos2dxSound.java new file mode 100644 index 0000000000..a053116924 --- /dev/null +++ b/tests/test.android/src/org/cocos2dx/lib/Cocos2dxSound.java @@ -0,0 +1,94 @@ +package org.cocos2dx.lib; + +import java.util.HashMap; + +import android.content.Context; +import android.media.AudioManager; +import android.media.SoundPool; +import android.util.Log; + +/** + * + * This class is used for controlling effect + * + */ + +public class Cocos2dxSound { + private Context context; + private HashMap mSoundIdStreamIdMap; + private HashMap mPathSoundIDMap; + private static final int MAX_SIMULTANEOUS_STREAMS_DEFAULT = 5; + private final SoundPool mSoundPool; + private static final String TAG = "Cocos2dxSound"; + private final int INVALID_SOUND_ID = -1; + private final int INVALID_STREAM_ID = -1; + + public Cocos2dxSound(Context context){ + this.context = context; + this.mSoundIdStreamIdMap = new HashMap(); + mSoundPool = new SoundPool(MAX_SIMULTANEOUS_STREAMS_DEFAULT, AudioManager.STREAM_MUSIC, 0); + mPathSoundIDMap = new HashMap(); + } + + void preloadEffect(String path){ + int soundId = createSoundIdFromAsset(path); + + if (soundId != INVALID_SOUND_ID){ + // the sound is loaded but has not been played + this.mSoundIdStreamIdMap.put(soundId, INVALID_STREAM_ID); + + this.mPathSoundIDMap.put(path, soundId); + } + } + + void unloadEffect(String path){ + // get sound id and remove from mPathSoundIDMap + Integer soundId = this.mPathSoundIDMap.remove(path); + + if (soundId != null){ + // unload effect + this.mSoundPool.unload(soundId.intValue()); + + // remove record from mSoundIdStreamIdMap + this.mSoundIdStreamIdMap.remove(soundId); + } + } + + void playEffect(String path){ + Integer soundId = this.mPathSoundIDMap.get(path); + + if (soundId != null){ + // the sound is preloaded + + // play sound + int streamId = this.mSoundPool.play(soundId.intValue(), 1.0f, 1.0f, 1, 1, 1.0f); + + // record + this.mSoundIdStreamIdMap.put(soundId, streamId); + } else { + // the effect is not prepared + preloadEffect(path); + playEffect(path); + } + } + + void stopEffect(int soundId){ + Integer streamId = this.mSoundIdStreamIdMap.get(soundId); + + if (streamId != null){ + this.mSoundPool.stop(streamId.intValue()); + } + } + + public int createSoundIdFromAsset(String path){ + int soundId = INVALID_SOUND_ID; + + try { + soundId = mSoundPool.load(context.getAssets().openFd(path), 1); + } catch(Exception e){ + Log.e(TAG, "error: " + e.getMessage(), e); + } + + return soundId; + } +} diff --git a/tests/test.android/src/org/cocos2dx/tests/TestsDemo.java b/tests/test.android/src/org/cocos2dx/tests/TestsDemo.java index ee915d73dd..84924905b3 100644 --- a/tests/test.android/src/org/cocos2dx/tests/TestsDemo.java +++ b/tests/test.android/src/org/cocos2dx/tests/TestsDemo.java @@ -22,18 +22,24 @@ public class TestsDemo extends Cocos2dxActivity{ @Override protected void onPause() { super.onPause(); - mGLView.onPause(); } @Override protected void onResume() { super.onResume(); - mGLView.onResume(); + } + + protected void onDestroy() + { + super.onDestroy(); + + android.os.Process.killProcess(android.os.Process.myPid()); } private GLSurfaceView mGLView; static { + System.loadLibrary("cocosdenshion"); System.loadLibrary("chipmunk"); System.loadLibrary("box2d"); System.loadLibrary("cocos2d"); diff --git a/tests/test.uphone/test.uphone.vcproj b/tests/test.uphone/test.uphone.vcproj index b2c87a7a96..37d55b56f1 100644 --- a/tests/test.uphone/test.uphone.vcproj +++ b/tests/test.uphone/test.uphone.vcproj @@ -887,6 +887,18 @@ > + + + + + + diff --git a/tests/test.win32/test.win32.vcproj b/tests/test.win32/test.win32.vcproj index 3f1a0812a9..345cf36fa7 100644 --- a/tests/test.win32/test.win32.vcproj +++ b/tests/test.win32/test.win32.vcproj @@ -41,7 +41,7 @@ + + + + + + diff --git a/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp b/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp new file mode 100644 index 0000000000..163748a0c4 --- /dev/null +++ b/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp @@ -0,0 +1,149 @@ +#include "CocosDenshionTest.h" +#include "cocos2d.h" +#include "SimpleAudioEngine.h" + +using namespace cocos2d; +using namespace CocosDenshion; + +#define LINE_SPACE 40 + +CocosDenshionTest::CocosDenshionTest() +: m_pItmeMenu(NULL), +m_tBeginPos(CGPointZero) +{ + std::string testItems[] = { + "preload background music", + "play background music", + "stop background music", + "pause background music", + "resume background music", + "rewind background music", + "is background music playing", + "preload effect", + "play effect", + "stop effect", + "unload effect" + }; + + // add menu items for tests + m_pItmeMenu = CCMenu::menuWithItems(NULL); + CGSize s = CCDirector::sharedDirector()->getWinSize(); + m_nTestCount = sizeof(testItems) / sizeof(testItems[0]); + + for (int i = 0; i < m_nTestCount; ++i) + { + CCLabelTTF* label = CCLabelTTF::labelWithString(testItems[i].c_str(), "Arial", 24); + CCMenuItemLabel* pMenuItem = CCMenuItemLabel::itemWithLabel(label, this, menu_selector(CocosDenshionTest::menuCallback)); + + m_pItmeMenu->addChild(pMenuItem, i + 10000); + pMenuItem->setPosition( CGPointMake( s.width / 2, (s.height - (i + 1) * LINE_SPACE) )); + } + + m_pItmeMenu->setContentSize(CGSizeMake(s.width, (m_nTestCount + 1) * LINE_SPACE)); + m_pItmeMenu->setPosition(CGPointZero); + addChild(m_pItmeMenu); + + setIsTouchEnabled(true); +} + +CocosDenshionTest::~CocosDenshionTest() +{ +} + +void CocosDenshionTest::onExit() +{ + CCLayer::onExit(); + + SimpleAudioEngine::sharedEngine()->end(); +} + +void CocosDenshionTest::menuCallback(NSObject * pSender) +{ + // get the userdata, it's the index of the menu item clicked + CCMenuItem* pMenuItem = (CCMenuItem *)(pSender); + int nIdx = pMenuItem->getZOrder() - 10000; + + switch(nIdx) + { + // preload background music + case 0: + break; + // play background music + case 1: + SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music.mid"); + break; + // stop background music + case 2: + break; + // pause background music + case 3: + break; + // resume background music + case 4: + break; + // rewind background music + case 5: + break; + // is background music playing + case 6: + break; + // preload effect + case 7: + break; + // play effect + case 8: + break; + // stop effect + case 9: + break; + // unload effect + case 10: + break; + } +} + +void CocosDenshionTest::ccTouchesBegan(NSSet *pTouches, UIEvent *pEvent) +{ + NSSetIterator it = pTouches->begin(); + CCTouch* touch = (CCTouch*)(*it); + + m_tBeginPos = touch->locationInView( touch->view() ); + m_tBeginPos = CCDirector::sharedDirector()->convertToGL( m_tBeginPos ); +} + +void CocosDenshionTest::ccTouchesMoved(NSSet *pTouches, UIEvent *pEvent) +{ + NSSetIterator it = pTouches->begin(); + CCTouch* touch = (CCTouch*)(*it); + + CGPoint touchLocation = touch->locationInView( touch->view() ); + touchLocation = CCDirector::sharedDirector()->convertToGL( touchLocation ); + float nMoveY = touchLocation.y - m_tBeginPos.y; + + CGPoint curPos = m_pItmeMenu->getPosition(); + CGPoint nextPos = ccp(curPos.x, curPos.y + nMoveY); + CGSize winSize = CCDirector::sharedDirector()->getWinSize(); + if (nextPos.y < 0.0f) + { + m_pItmeMenu->setPosition(CGPointZero); + return; + } + + if (nextPos.y > ((m_nTestCount + 1)* LINE_SPACE - winSize.height)) + { + m_pItmeMenu->setPosition(ccp(0, ((m_nTestCount + 1)* LINE_SPACE - winSize.height))); + return; + } + + m_pItmeMenu->setPosition(nextPos); + m_tBeginPos = touchLocation; +} + +void CocosDenshionTestScene::runThisTest() +{ + CCLayer* pLayer = new CocosDenshionTest(); + addChild(pLayer); + pLayer->autorelease(); + + CCDirector::sharedDirector()->replaceScene(this); +} \ No newline at end of file diff --git a/tests/tests/CocosDenshionTest/CocosDenshionTest.h b/tests/tests/CocosDenshionTest/CocosDenshionTest.h new file mode 100644 index 0000000000..99ebba2d79 --- /dev/null +++ b/tests/tests/CocosDenshionTest/CocosDenshionTest.h @@ -0,0 +1,29 @@ +#ifndef __COCOS_DENSHION_TEST__ +#define __COCOS_DENSHION_TEST__ + +#include "../testBasic.h" + +class CocosDenshionTest : public CCLayer +{ +public: + CocosDenshionTest(void); + ~CocosDenshionTest(void); + + void menuCallback(NSObject * pSender); + virtual void ccTouchesMoved(NSSet *pTouches, UIEvent *pEvent); + virtual void ccTouchesBegan(NSSet *pTouches, UIEvent *pEvent); + virtual void onExit(); + +private: + CCMenu* m_pItmeMenu; + CGPoint m_tBeginPos; + int m_nTestCount; +}; + +class CocosDenshionTestScene : public TestScene +{ +public: + virtual void runThisTest(); +}; + +#endif //__COCOS_DENSHION_TEST__ diff --git a/tests/tests/controller.cpp b/tests/tests/controller.cpp index a4c47385c4..fe466d3396 100644 --- a/tests/tests/controller.cpp +++ b/tests/tests/controller.cpp @@ -75,6 +75,8 @@ static TestScene* CreateTestScene(int nIdx) #endif case TEST_KEYPAD: pScene = new KeypadTestScene(); break; + case TEST_COCOSDENSHION: + pScene = new CocosDenshionTestScene(); break; default: break; } diff --git a/tests/tests/tests.h b/tests/tests/tests.h index f1436a1cae..4a6d02b719 100644 --- a/tests/tests/tests.h +++ b/tests/tests/tests.h @@ -31,6 +31,7 @@ #include "HiResTest/HiResTest.h" #include "AccelerometerTest/AccelerometerTest.h" #include "KeypadTest/KeypadTest.h" +#include "CocosDenshionTest/CocosDenshionTest.h" enum { @@ -64,6 +65,7 @@ enum TEST_HIRES, TEST_ACCELEROMRTER, TEST_KEYPAD, + TEST_COCOSDENSHION, TESTS_COUNT, }; @@ -99,6 +101,7 @@ const std::string g_aTestNames[TESTS_COUNT] = { "HiResTest", "Accelerometer", "KeypadTest", + "CocosDenshionTest" }; #endif From 459a34d51e3056125fb0dac96c877b0153df358b Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 13:32:10 +0800 Subject: [PATCH 2/9] [android] make helloworld run on 2.1 --- HelloWorld/android/res/layout/main.xml | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 HelloWorld/android/res/layout/main.xml diff --git a/HelloWorld/android/res/layout/main.xml b/HelloWorld/android/res/layout/main.xml deleted file mode 100644 index ca19a18aea..0000000000 --- a/HelloWorld/android/res/layout/main.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - From f9d0db48e1b1eb2c5559b7fb96eb3ac73c574acc Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 15:11:15 +0800 Subject: [PATCH 3/9] issue #307: merge TestAudioEngine into tests --- tests/test.uphone/Makefile.ARM | 7 +- tests/test.uphone/test.uphone.vcproj | 6 +- .../CocosDenshionTest/CocosDenshionTest.cpp | 87 +++++++++++++++---- .../CocosDenshionTest/CocosDenshionTest.h | 1 + 4 files changed, 80 insertions(+), 21 deletions(-) diff --git a/tests/test.uphone/Makefile.ARM b/tests/test.uphone/Makefile.ARM index 45ee3041fb..29520feec3 100644 --- a/tests/test.uphone/Makefile.ARM +++ b/tests/test.uphone/Makefile.ARM @@ -92,7 +92,8 @@ OBJECTS = \ $(OBJECTS_DIR)/Ball.o \ $(OBJECTS_DIR)/Paddle.o \ $(OBJECTS_DIR)/TouchesTest.o \ - $(OBJECTS_DIR)/TransitionsTest.o + $(OBJECTS_DIR)/TransitionsTest.o \ + $(OBJECTS_DIR)/CocosDenshionTest.o ADD_OBJECTS += @@ -291,3 +292,7 @@ $(OBJECTS_DIR)/TouchesTest.o : ../tests/TouchesTest/TouchesTest.cpp $(OBJECTS_DIR)/TransitionsTest.o : ../tests/TransitionsTest/TransitionsTest.cpp $(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/TransitionsTest.o ../tests/TransitionsTest/TransitionsTest.cpp + +$(OBJECTS_DIR)/CocosDenshionTest.o : ../tests/CocosDenshionTest/CocosDenshionTest.cpp + $(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/CocosDenshionTest.o ../tests/CocosDenshionTest/CocosDenshionTest.cpp + diff --git a/tests/test.uphone/test.uphone.vcproj b/tests/test.uphone/test.uphone.vcproj index d840c80909..66d0b8e4dd 100644 --- a/tests/test.uphone/test.uphone.vcproj +++ b/tests/test.uphone/test.uphone.vcproj @@ -66,7 +66,7 @@ /> + + diff --git a/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp b/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp index 163748a0c4..fb02f6d08d 100644 --- a/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp +++ b/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp @@ -1,7 +1,23 @@ +// to enable CCLOG() +#define COCOS2D_DEBUG 1 + #include "CocosDenshionTest.h" #include "cocos2d.h" #include "SimpleAudioEngine.h" +// android effect only support ogg +#ifdef CCX_PLATFORM_ANDROID + #define EFFECT_FILE "effect2.ogg" +#else + #define EFFECT_FILE "effect1.wav" +#endif // CCX_PLATFORM_ANDROID + +#ifdef CCX_PLATFORM_WIN32 + #define MUSIC_FILE "music.mid" +#else + #define MUSIC_FILE "background.mp3" +#endif // CCX_PLATFORM_WIN32 + using namespace cocos2d; using namespace CocosDenshion; @@ -9,20 +25,23 @@ using namespace CocosDenshion; CocosDenshionTest::CocosDenshionTest() : m_pItmeMenu(NULL), -m_tBeginPos(CGPointZero) +m_tBeginPos(CGPointZero), +m_nSoundId(0) { std::string testItems[] = { - "preload background music", "play background music", "stop background music", "pause background music", "resume background music", "rewind background music", "is background music playing", - "preload effect", "play effect", "stop effect", - "unload effect" + "unload effect", + "add background music volume", + "sub background music volume", + "add effects volume", + "sub effects volume" }; // add menu items for tests @@ -44,6 +63,10 @@ m_tBeginPos(CGPointZero) addChild(m_pItmeMenu); setIsTouchEnabled(true); + + // preload background music and effect + SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(MUSIC_FILE); + SimpleAudioEngine::sharedEngine()->preloadEffect(EFFECT_FILE); } CocosDenshionTest::~CocosDenshionTest() @@ -65,41 +88,67 @@ void CocosDenshionTest::menuCallback(NSObject * pSender) switch(nIdx) { - // preload background music - case 0: - break; // play background music - case 1: - SimpleAudioEngine::sharedEngine()->playBackgroundMusic("music.mid"); + case 0: + SimpleAudioEngine::sharedEngine()->playBackgroundMusic(MUSIC_FILE, true); break; // stop background music - case 2: + case 1: + SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(); break; // pause background music - case 3: + case 2: + SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); break; // resume background music - case 4: + case 3: + SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); break; // rewind background music - case 5: + case 4: + SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic(); break; // is background music playing - case 6: - break; - // preload effect - case 7: + case 5: + if (SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) + { + CCLOG("background music is playing"); + } + else + { + CCLOG("background music is not playing"); + } break; // play effect - case 8: + case 6: + m_nSoundId = SimpleAudioEngine::sharedEngine()->playEffect(EFFECT_FILE); break; // stop effect - case 9: + case 7: + SimpleAudioEngine::sharedEngine()->stopEffect(m_nSoundId); break; // unload effect + case 8: + SimpleAudioEngine::sharedEngine()->unloadEffect(EFFECT_FILE); + break; + // add bakcground music volume + case 9: + SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume() + 0.1); + break; + // sub backgroud music volume case 10: + SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume() - 0.1); + break; + // add effects volume + case 11: + SimpleAudioEngine::sharedEngine()->setEffectsVolume(SimpleAudioEngine::sharedEngine()->getEffectsVolume() + 0.1); + break; + // sub effects volume + case 12: + SimpleAudioEngine::sharedEngine()->setEffectsVolume(SimpleAudioEngine::sharedEngine()->getEffectsVolume() - 0.1); break; } + } void CocosDenshionTest::ccTouchesBegan(NSSet *pTouches, UIEvent *pEvent) diff --git a/tests/tests/CocosDenshionTest/CocosDenshionTest.h b/tests/tests/CocosDenshionTest/CocosDenshionTest.h index 99ebba2d79..2173db78ba 100644 --- a/tests/tests/CocosDenshionTest/CocosDenshionTest.h +++ b/tests/tests/CocosDenshionTest/CocosDenshionTest.h @@ -18,6 +18,7 @@ private: CCMenu* m_pItmeMenu; CGPoint m_tBeginPos; int m_nTestCount; + unsigned int m_nSoundId; }; class CocosDenshionTestScene : public TestScene From dfad6ab9f901a41d337fe613b5117978813227dd Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 15:14:07 +0800 Subject: [PATCH 4/9] change the interface of SimpleAudioEngine --- CocosDenshion/android/SimpleAudioEngine.cpp | 43 +++++++++------------ CocosDenshion/include/SimpleAudioEngine.h | 21 ++++------ CocosDenshion/iphone/SimpleAudioEngine.mm | 27 ++++++------- CocosDenshion/uphone/SimpleAudioEngine.cpp | 16 ++++---- CocosDenshion/win32/SimpleAudioEngine.cpp | 16 ++++---- 5 files changed, 54 insertions(+), 69 deletions(-) diff --git a/CocosDenshion/android/SimpleAudioEngine.cpp b/CocosDenshion/android/SimpleAudioEngine.cpp index 0160f6c5c6..dc4eee55cc 100644 --- a/CocosDenshion/android/SimpleAudioEngine.cpp +++ b/CocosDenshion/android/SimpleAudioEngine.cpp @@ -51,7 +51,7 @@ namespace CocosDenshion void SimpleAudioEngine::end() { - + endJNI(); } void SimpleAudioEngine::setResource(const char* pszResPath, const char* pszZipFileName) @@ -71,76 +71,71 @@ namespace CocosDenshion void SimpleAudioEngine::stopBackgroundMusic(bool bReleaseData) { - + stopBackgroundMusicJNI(); } void SimpleAudioEngine::pauseBackgroundMusic() { - + pauseBackgroundMusicJNI(); } void SimpleAudioEngine::resumeBackgroundMusic() { - + resumeBackgroundMusicJNI(); } void SimpleAudioEngine::rewindBackgroundMusic() { - + rewindBackgroundMusicJNI(); } bool SimpleAudioEngine::willPlayBackgroundMusic() { - return false; + return true; } bool SimpleAudioEngine::isBackgroundMusicPlaying() { - return false; + return isBackgroundMusicPlayingJNI(); } - int SimpleAudioEngine::getBackgroundMusicVolume() + float SimpleAudioEngine::getBackgroundMusicVolume() { - return -1; + return getBackgroundMusicVolumeJNI(); } - void SimpleAudioEngine::setBackgroundMusicVolume(int volume) + void SimpleAudioEngine::setBackgroundMusicVolume(float volume) { - + setBackgroundMusicVolumeJNI(volume); } - int SimpleAudioEngine::getEffectsVolume() + float SimpleAudioEngine::getEffectsVolume() { - return -1; + getEffectsVolumeJNI(); } - void SimpleAudioEngine::setEffectsVolume(int volume) + void SimpleAudioEngine::setEffectsVolume(float volume) { - + setEffectsVolumeJNI(volume); } unsigned int SimpleAudioEngine::playEffect(const char* pszFilePath) { - return 0; + return playEffectJNI(pszFilePath); } void SimpleAudioEngine::stopEffect(unsigned int nSoundId) { - + stopEffectJNI(nSoundId); } void SimpleAudioEngine::preloadEffect(const char* pszFilePath) { - + preloadEffectJNI(pszFilePath); } void SimpleAudioEngine::unloadEffect(const char* pszFilePath) { - - } - - void SimpleAudioEngine::unloadEffectAll() - { - + unloadEffectJNI(pszFilePath); } } \ No newline at end of file diff --git a/CocosDenshion/include/SimpleAudioEngine.h b/CocosDenshion/include/SimpleAudioEngine.h index b1c5cda6e7..336e6eda3d 100644 --- a/CocosDenshion/include/SimpleAudioEngine.h +++ b/CocosDenshion/include/SimpleAudioEngine.h @@ -101,26 +101,26 @@ public: // properties /** - @brief The volume of the background music max value is 100,the min value is 0 + @brief The volume of the background music max value is 1.0,the min value is 0.0 */ - int getBackgroundMusicVolume(); + float getBackgroundMusicVolume(); /** @brief set the volume of background music - @param volume must be in 0~100 + @param volume must be in 0.0~1.0 */ - void setBackgroundMusicVolume(int volume); + void setBackgroundMusicVolume(float volume); /** - @brief The volume of the effects max value is 100,the min value is 0 + @brief The volume of the effects max value is 1.0,the min value is 0.0 */ - int getEffectsVolume(); + float getEffectsVolume(); /** @brief set the volume of sound effecs - @param volume must be in 0~100 + @param volume must be in 0.0~1.0 */ - void setEffectsVolume(int volume); + void setEffectsVolume(float volume); // for sound effects /** @@ -147,11 +147,6 @@ public: @param[in] pszFilePath The path of the effect file,or the FileName of T_SoundResInfo */ void unloadEffect(const char* pszFilePath); - - /** - @brief unload all preloaded effect from internal buffer - */ - void unloadEffectAll(); }; } // end of namespace CocosDenshion diff --git a/CocosDenshion/iphone/SimpleAudioEngine.mm b/CocosDenshion/iphone/SimpleAudioEngine.mm index 3559c81038..1fc8e1f698 100644 --- a/CocosDenshion/iphone/SimpleAudioEngine.mm +++ b/CocosDenshion/iphone/SimpleAudioEngine.mm @@ -70,22 +70,22 @@ static bool static_isBackgroundMusicPlaying() return [[SimpleAudioEngine sharedEngine] isBackgroundMusicPlaying]; } -static int static_getBackgroundMusicVolume() +static float static_getBackgroundMusicVolume() { - return (int)[[SimpleAudioEngine sharedEngine] backgroundMusicVolume]; + return [[SimpleAudioEngine sharedEngine] backgroundMusicVolume]; } -static void static_setBackgroundMusicVolume(int volume) +static void static_setBackgroundMusicVolume(float volume) { [SimpleAudioEngine sharedEngine].backgroundMusicVolume = volume; } -static int static_getEffectsVolume() +static float static_getEffectsVolume() { - return (int)[[SimpleAudioEngine sharedEngine] effectsVolume]; + return [SimpleAudioEngine sharedEngine] effectsVolume]; } -static void static_setEffectsVolume(int volume) +static void static_setEffectsVolume(float volume) { [SimpleAudioEngine sharedEngine].effectsVolume = volume; } @@ -190,22 +190,22 @@ namespace CocosDenshion return static_isBackgroundMusicPlaying(); } - int SimpleAudioEngine::getBackgroundMusicVolume() + float SimpleAudioEngine::getBackgroundMusicVolume() { - return (int)static_getBackgroundMusicVolume(); + return static_getBackgroundMusicVolume(); } - void SimpleAudioEngine::setBackgroundMusicVolume(int volume) + void SimpleAudioEngine::setBackgroundMusicVolume(float volume) { static_setBackgroundMusicVolume(volume); } - int SimpleAudioEngine::getEffectsVolume() + float SimpleAudioEngine::getEffectsVolume() { return (int)static_getEffectsVolume(); } - void SimpleAudioEngine::setEffectsVolume(int volume) + void SimpleAudioEngine::setEffectsVolume(float volume) { static_setEffectsVolume(volume); } @@ -229,9 +229,4 @@ namespace CocosDenshion { static_unloadEffect(pszFilePath); } - - void SimpleAudioEngine::unloadEffectAll() - { - - } } \ No newline at end of file diff --git a/CocosDenshion/uphone/SimpleAudioEngine.cpp b/CocosDenshion/uphone/SimpleAudioEngine.cpp index 4c9ba6d52b..d8140c54df 100644 --- a/CocosDenshion/uphone/SimpleAudioEngine.cpp +++ b/CocosDenshion/uphone/SimpleAudioEngine.cpp @@ -159,12 +159,12 @@ bool SimpleAudioEngine::isBackgroundMusicPlaying() } // properties -int SimpleAudioEngine::getBackgroundMusicVolume() +float SimpleAudioEngine::getBackgroundMusicVolume() { return s_nBackgroundMusicVolume; } -void SimpleAudioEngine::setBackgroundMusicVolume(int volume) +void SimpleAudioEngine::setBackgroundMusicVolume(float volume) { if (volume > 100) { @@ -183,12 +183,12 @@ void SimpleAudioEngine::setBackgroundMusicVolume(int volume) s_nBackgroundMusicVolume = volume; } -int SimpleAudioEngine::getEffectsVolume() +float SimpleAudioEngine::getEffectsVolume() { return s_nEffectsVolume; } -void SimpleAudioEngine::setEffectsVolume(int volume) +void SimpleAudioEngine::setEffectsVolume(float volume) { if (volume > 100) { @@ -252,9 +252,9 @@ void SimpleAudioEngine::unloadEffect(const char* pszFilePath) s_pDataManager->unloadEffect(pszFilePath); } -void SimpleAudioEngine::unloadEffectAll() -{ - s_pDataManager->removeAllEffects(); -} +// void SimpleAudioEngine::unloadEffectAll() +// { +// s_pDataManager->removeAllEffects(); +// } } // end of namespace CocosDenshion diff --git a/CocosDenshion/win32/SimpleAudioEngine.cpp b/CocosDenshion/win32/SimpleAudioEngine.cpp index e8e52cea70..76b6b3d8e0 100644 --- a/CocosDenshion/win32/SimpleAudioEngine.cpp +++ b/CocosDenshion/win32/SimpleAudioEngine.cpp @@ -160,30 +160,30 @@ void SimpleAudioEngine::unloadEffect(const char* pszFilePath) s_List.erase(nID); } -void SimpleAudioEngine::unloadEffectAll() -{ - s_List.clear(); -} +// void SimpleAudioEngine::unloadEffectAll() +// { +// s_List.clear(); +// } ////////////////////////////////////////////////////////////////////////// // volume interface ////////////////////////////////////////////////////////////////////////// -int SimpleAudioEngine::getBackgroundMusicVolume() +float SimpleAudioEngine::getBackgroundMusicVolume() { return 100; } -void SimpleAudioEngine::setBackgroundMusicVolume(int volume) +void SimpleAudioEngine::setBackgroundMusicVolume(float volume) { } -int SimpleAudioEngine::getEffectsVolume() +float SimpleAudioEngine::getEffectsVolume() { return 100; } -void SimpleAudioEngine::setEffectsVolume(int volume) +void SimpleAudioEngine::setEffectsVolume(float volume) { } From e92970ec69dafd9b1c99b5cb5bd117f11d026eb2 Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 15:15:09 +0800 Subject: [PATCH 5/9] [android] fixed #311: implement cocosdenshin on android --- .../android/jni/SimpleAudioEngineJni.cpp | 193 ++++++++++++++++-- .../android/jni/SimpleAudioEngineJni.h | 14 ++ tests/test.android/AndroidManifest.xml | 2 +- .../org/cocos2dx/lib/Cocos2dxActivity.java | 57 ++++++ .../src/org/cocos2dx/lib/Cocos2dxMusic.java | 68 +++--- .../src/org/cocos2dx/lib/Cocos2dxSound.java | 72 +++++-- 6 files changed, 350 insertions(+), 56 deletions(-) diff --git a/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp b/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp index 95df0dc69e..2bb2f8d4a7 100644 --- a/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp +++ b/CocosDenshion/android/jni/SimpleAudioEngineJni.cpp @@ -1,9 +1,9 @@ #include "SimpleAudioEngineJni.h" #include -#define LOG_TAG "libSimpleAudioEngine" -#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) -#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) +#define LOG_TAG "libSimpleAudioEngine" +#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) + extern "C" { @@ -15,10 +15,6 @@ extern "C" { gJavaVM = vm; - LOGI("JNI_OnLoad"); - - LOGI("JNI_OnLoad ok"); - return JNI_VERSION_1_4; } @@ -26,37 +22,34 @@ extern "C" { jmethodID ret = 0; - LOGI("getMethodID"); - // get jni environment and java class for Cocos2dxActivity if (gJavaVM->GetEnv((void**)&env, JNI_VERSION_1_4) != JNI_OK) { - LOGE("Failed to get the environment using GetEnv()"); + LOGD("Failed to get the environment using GetEnv()"); return 0; } if (gJavaVM->AttachCurrentThread(&env, 0) < 0) { - LOGE("Failed to get the environment using AttachCurrentThread()"); + LOGD("Failed to get the environment using AttachCurrentThread()"); return 0; } classOfCocos2dxActivity = env->FindClass("org/cocos2dx/lib/Cocos2dxActivity"); if (! classOfCocos2dxActivity) { - LOGE("Failed to find class of org/cocos2dx/lib/Cocos2dxActivity"); + LOGD("Failed to find class of org/cocos2dx/lib/Cocos2dxActivity"); return 0; } if (env != 0 && classOfCocos2dxActivity != 0) { ret = env->GetStaticMethodID(classOfCocos2dxActivity, methodName, paramCode); - LOGI("after GetStaticMethodID"); } - if (ret) + if (! ret) { - LOGI("get method id of %s ok", methodName); + LOGD("get method id of %s error", methodName); } return ret; @@ -74,4 +67,174 @@ extern "C" //env->ReleaseStringUTFChars(StringArg, path); } } + + void stopBackgroundMusicJNI() + { + // void stopBackgroundMusic() + jmethodID stopBackgroundMusicMethodID = getMethodID("stopBackgroundMusic", "()V"); + + if (stopBackgroundMusicMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, stopBackgroundMusicMethodID); + } + } + + void pauseBackgroundMusicJNI() + { + // void pauseBackgroundMusic() + jmethodID pauseBackgroundMusicMethodID = getMethodID("pauseBackgroundMusic", "()V"); + + if (pauseBackgroundMusicMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, pauseBackgroundMusicMethodID); + } + } + + void resumeBackgroundMusicJNI() + { + // void resumeBackgroundMusic() + jmethodID resumeBackgroundMusicMethodID = getMethodID("resumeBackgroundMusic", "()V"); + + if (resumeBackgroundMusicMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, resumeBackgroundMusicMethodID); + } + } + + void rewindBackgroundMusicJNI() + { + // void rewindBackgroundMusic() + jmethodID rewindBackgroundMusicMethodID = getMethodID("rewindBackgroundMusic", "()V"); + + if (rewindBackgroundMusicMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, rewindBackgroundMusicMethodID); + } + } + + bool isBackgroundMusicPlayingJNI() + { + // boolean rewindBackgroundMusic() + jmethodID isBackgroundMusicPlayingMethodID = getMethodID("isBackgroundMusicPlaying", "()Z"); + jboolean ret = false; + + if (isBackgroundMusicPlayingMethodID) + { + ret = env->CallStaticBooleanMethod(classOfCocos2dxActivity, isBackgroundMusicPlayingMethodID); + } + + return ret; + } + + float getBackgroundMusicVolumeJNI() + { + // float getBackgroundMusicVolume() + jmethodID getBackgroundMusicVolumeID = getMethodID("getBackgroundMusicVolume", "()F"); + jfloat ret = 0.0; + + if (getBackgroundMusicVolumeID) + { + ret = env->CallStaticFloatMethod(classOfCocos2dxActivity, getBackgroundMusicVolumeID); + } + + return ret; + } + + void setBackgroundMusicVolumeJNI(float volume) + { + // void setBackgroundMusicVolume() + jmethodID setBackgroundMusicVolumeMethodID = getMethodID("setBackgroundMusicVolume", "(F)V"); + + if (setBackgroundMusicVolumeMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, setBackgroundMusicVolumeMethodID, volume); + } + } + + unsigned int playEffectJNI(const char* path) + { + int ret = 0; + + // int playEffect(String) + jmethodID playEffectMethodID = getMethodID("playEffect", "(Ljava/lang/String;)I"); + + if (playEffectMethodID) + { + jstring StringArg = env->NewStringUTF(path); + ret = env->CallStaticIntMethod(classOfCocos2dxActivity, playEffectMethodID, StringArg); + } + + return (unsigned int)ret; + } + + void stopEffectJNI(unsigned int nSoundId) + { + // void stopEffect(int) + jmethodID stopEffectMethodID = getMethodID("stopEffect", "(I)V"); + + if (stopEffectMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, stopEffectMethodID, (int)nSoundId); + } + } + + void endJNI() + { + // void end() + jmethodID endMethodID = getMethodID("end", "()V"); + + if (endMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, endMethodID); + } + } + + float getEffectsVolumeJNI() + { + // float getEffectsVolume() + jmethodID getEffectsVolumeMethodID = getMethodID("getEffectsVolume", "()F"); + jfloat ret = -1.0; + + if (getEffectsVolumeMethodID) + { + ret = env->CallStaticFloatMethod(classOfCocos2dxActivity, getEffectsVolumeMethodID); + } + + return ret; + } + + void setEffectsVolumeJNI(float volume) + { + // void setEffectsVolume(float) + jmethodID setEffectsVolumeMethodID = getMethodID("setEffectsVolume", "(F)V"); + + if (setEffectsVolumeMethodID) + { + env->CallStaticVoidMethod(classOfCocos2dxActivity, setEffectsVolumeMethodID, volume); + } + } + + void preloadEffectJNI(const char *path) + { + // void preloadEffect(String) + jmethodID preloadEffectMethodID = getMethodID("preloadEffect", "(Ljava/lang/String;)V"); + + if (preloadEffectMethodID) + { + jstring StringArg = env->NewStringUTF(path); + env->CallStaticVoidMethod(classOfCocos2dxActivity, preloadEffectMethodID, StringArg); + } + } + + void unloadEffectJNI(const char* path) + { + // void unloadEffect(String) + jmethodID unloadEffectMethodID = getMethodID("unloadEffect", "(Ljava/lang/String;)V"); + + if (unloadEffectMethodID) + { + jstring StringArg = env->NewStringUTF(path); + env->CallStaticVoidMethod(classOfCocos2dxActivity, unloadEffectMethodID, StringArg); + } + } } diff --git a/CocosDenshion/android/jni/SimpleAudioEngineJni.h b/CocosDenshion/android/jni/SimpleAudioEngineJni.h index 01ea6b40c5..37073e34bc 100644 --- a/CocosDenshion/android/jni/SimpleAudioEngineJni.h +++ b/CocosDenshion/android/jni/SimpleAudioEngineJni.h @@ -6,6 +6,20 @@ extern "C" { extern void playBackgroundMusicJNI(const char *path, bool isLoop); + extern void stopBackgroundMusicJNI(); + extern void pauseBackgroundMusicJNI(); + extern void resumeBackgroundMusicJNI(); + extern void rewindBackgroundMusicJNI(); + extern bool isBackgroundMusicPlayingJNI(); + extern float getBackgroundMusicVolumeJNI(); + extern void setBackgroundMusicVolumeJNI(float volume); + extern unsigned int playEffectJNI(const char* path); + extern void stopEffectJNI(unsigned int nSoundId); + extern void endJNI(); + extern float getEffectsVolumeJNI(); + extern void setEffectsVolumeJNI(float volume); + extern void preloadEffectJNI(const char *path); + extern void unloadEffectJNI(const char* path); } #endif // __SIMPLE_AUDIO_ENGINE_JNI__ \ No newline at end of file diff --git a/tests/test.android/AndroidManifest.xml b/tests/test.android/AndroidManifest.xml index 862ac2f5b8..38df29d6e4 100644 --- a/tests/test.android/AndroidManifest.xml +++ b/tests/test.android/AndroidManifest.xml @@ -3,7 +3,7 @@ package="org.cocos2dx.tests" android:versionCode="1" android:versionName="1.0"> - + mSoundIdStreamIdMap; - private HashMap mPathSoundIDMap; - private static final int MAX_SIMULTANEOUS_STREAMS_DEFAULT = 5; - private final SoundPool mSoundPool; + // sound path and sound id map + private HashMap mPathSoundIDMap; + private static final String TAG = "Cocos2dxSound"; + private static final int MAX_SIMULTANEOUS_STREAMS_DEFAULT = 5; + private static final float SOUND_RATE = 1.0f; + private static final int SOUND_PRIORITY = 1; + private static final int SOUND_LOOP_TIME = 0; + private static final int SOUND_QUALITY = 5; + private final int INVALID_SOUND_ID = -1; private final int INVALID_STREAM_ID = -1; public Cocos2dxSound(Context context){ - this.context = context; - this.mSoundIdStreamIdMap = new HashMap(); - mSoundPool = new SoundPool(MAX_SIMULTANEOUS_STREAMS_DEFAULT, AudioManager.STREAM_MUSIC, 0); - mPathSoundIDMap = new HashMap(); + this.mContext = context; + initData(); } - void preloadEffect(String path){ + public int preloadEffect(String path){ int soundId = createSoundIdFromAsset(path); if (soundId != INVALID_SOUND_ID){ // the sound is loaded but has not been played this.mSoundIdStreamIdMap.put(soundId, INVALID_STREAM_ID); + // record path and sound id map this.mPathSoundIDMap.put(path, soundId); } + + return soundId; } - void unloadEffect(String path){ + public void unloadEffect(String path){ // get sound id and remove from mPathSoundIDMap Integer soundId = this.mPathSoundIDMap.remove(path); @@ -54,25 +66,28 @@ public class Cocos2dxSound { } } - void playEffect(String path){ + public int playEffect(String path){ Integer soundId = this.mPathSoundIDMap.get(path); if (soundId != null){ // the sound is preloaded // play sound - int streamId = this.mSoundPool.play(soundId.intValue(), 1.0f, 1.0f, 1, 1, 1.0f); + int streamId = this.mSoundPool.play(soundId.intValue(), this.mLeftVolume, + this.mRightVolume, SOUND_PRIORITY, SOUND_LOOP_TIME, SOUND_RATE); - // record + // record sound id and stream id map this.mSoundIdStreamIdMap.put(soundId, streamId); } else { // the effect is not prepared - preloadEffect(path); + soundId = preloadEffect(path); playEffect(path); } + + return soundId.intValue(); } - void stopEffect(int soundId){ + public void stopEffect(int soundId){ Integer streamId = this.mSoundIdStreamIdMap.get(soundId); if (streamId != null){ @@ -80,15 +95,40 @@ public class Cocos2dxSound { } } + public float getEffectsVolume(){ + return (this.mLeftVolume + this.mRightVolume) / 2; + } + + public void setEffectsVolume(float volume){ + this.mLeftVolume = this.mRightVolume = volume; + } + + public void end(){ + this.mSoundPool.release(); + this.mPathSoundIDMap.clear(); + this.mSoundIdStreamIdMap.clear(); + + initData(); + } + public int createSoundIdFromAsset(String path){ int soundId = INVALID_SOUND_ID; try { - soundId = mSoundPool.load(context.getAssets().openFd(path), 1); + soundId = mSoundPool.load(mContext.getAssets().openFd(path), 0); } catch(Exception e){ Log.e(TAG, "error: " + e.getMessage(), e); } return soundId; } + + private void initData(){ + this.mSoundIdStreamIdMap = new HashMap(); + mSoundPool = new SoundPool(MAX_SIMULTANEOUS_STREAMS_DEFAULT, AudioManager.STREAM_MUSIC, SOUND_QUALITY); + mPathSoundIDMap = new HashMap(); + + this.mLeftVolume = 0.5f; + this.mRightVolume = 0.5f; + } } From cffc61d42669266a26d97fd67b817aff1856166d Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 15:17:23 +0800 Subject: [PATCH 6/9] issue #307: add music resource --- tests/Res/background.mp3.REMOVED.git-id | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/Res/background.mp3.REMOVED.git-id diff --git a/tests/Res/background.mp3.REMOVED.git-id b/tests/Res/background.mp3.REMOVED.git-id new file mode 100644 index 0000000000..cfc16a8a4e --- /dev/null +++ b/tests/Res/background.mp3.REMOVED.git-id @@ -0,0 +1 @@ +aec1c0a8c8068377fddca5ddd32084d8c3c3c419 \ No newline at end of file From 01a3e37db8a940fff6704eb8a330ee577524284d Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 15:45:55 +0800 Subject: [PATCH 7/9] [android] fix bug of build_native.sh --- HelloWorld/android/build_native.sh | 25 ++++++++++++++++--------- tests/test.android/build_native.sh | 27 ++++++++++++++------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/HelloWorld/android/build_native.sh b/HelloWorld/android/build_native.sh index 776fd81b0f..3c6b1624da 100644 --- a/HelloWorld/android/build_native.sh +++ b/HelloWorld/android/build_native.sh @@ -1,20 +1,27 @@ # set params ANDROID_NDK_ROOT=/cygdrive/e/android-ndk-r4-crystax COCOS2DX_ROOT=/cygdrive/d/Work7/cocos2d-x - -# copy resources - HELLOWORLD_ROOT=$COCOS2DX_ROOT/HelloWorld/android +# make sure assets is exist if [ -d $HELLOWORLD_ROOT/assets ]; then - echo "resources already exist" -else - mkdir $HELLOWORLD_ROOT/assets - cp $COCOS2DX_ROOT/HelloWorld/Resource/CloseNormal.png $HELLOWORLD_ROOT/assets - cp $COCOS2DX_ROOT/HelloWorld/Resource/CloseSelected.png $HELLOWORLD_ROOT/assets - cp $COCOS2DX_ROOT/HelloWorld/Resource/HelloWorld.png $HELLOWORLD_ROOT/assets + rm -rf $HELLOWORLD_ROOT/assets fi +mkdir $HELLOWORLD_ROOT/assets + +# copy resources +for file in $COCOS2DX_ROOT/HelloWorld/Resource/* +do + if [ -d $file ]; then + cp -rf $file $HELLOWORLD_ROOT/assets + fi + + if [ -f $file ]; then + cp $file $HELLOWORLD_ROOT/assets + fi +done + # build pushd $ANDROID_NDK_ROOT ./ndk-build -C $HELLOWORLD_ROOT diff --git a/tests/test.android/build_native.sh b/tests/test.android/build_native.sh index c194d4eb8c..ebb18797f4 100644 --- a/tests/test.android/build_native.sh +++ b/tests/test.android/build_native.sh @@ -4,22 +4,23 @@ COCOS2DX_ROOT=/cygdrive/d/Work7/cocos2d-x TESTS_ROOT=$COCOS2DX_ROOT/tests/test.android # make sure assets is exist -if [ ! -d $TESTS_ROOT/assets ]; then - mkdir $TESTS_ROOT/assets +if [ -d $TESTS_ROOT/assets ]; then + rm -rf $TESTS_ROOT/assets fi +mkdir $TESTS_ROOT/assets + # copy resources -if [ -d $TESTS_ROOT/assets/animations ]; then - echo "resources already exist" -else - cp -R $COCOS2DX_ROOT/tests/Res/animations $TESTS_ROOT/assets - cp -R $COCOS2DX_ROOT/tests/Res/fonts $TESTS_ROOT/assets - cp -R $COCOS2DX_ROOT/tests/Res/Images $TESTS_ROOT/assets - cp -R $COCOS2DX_ROOT/tests/Res/TileMaps $TESTS_ROOT/assets - cp $COCOS2DX_ROOT/tests/Res/effect1.wav $TESTS_ROOT/assets - cp $COCOS2DX_ROOT/tests/Res/effect2.wav $TESTS_ROOT/assets - cp $COCOS2DX_ROOT/tests/Res/music.mid $TESTS_ROOT/assets -fi +for file in $COCOS2DX_ROOT/tests/Res/* +do + if [ -d $file ]; then + cp -rf $file $TESTS_ROOT/assets + fi + + if [ -f $file ]; then + cp $file $TESTS_ROOT/assets + fi +done # build From 8c114caa0daaaf873e6b020b74393f978608a01c Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 15:57:35 +0800 Subject: [PATCH 8/9] issue #307: reomve TestAudioEngine --- .../TestAudioEngine_iphoneAppDelegate.h | 22 - .../TestAudioEngine_iphoneAppDelegate.m | 88 - .../TestAudioEngine_iphoneViewController.h | 28 - .../TestAudioEngine_iphoneViewController.mm | 263 --- TestAudioEngine.iphone/MainWindow.xib | 444 ----- .../Sounds/background.mp3.REMOVED.git-id | 1 - .../project.pbxproj | 467 ----- .../TestAudioEngine_iphoneViewController.xib | 156 -- .../TestAudioEngine_iphone_Prefix.pch | 8 - TestAudioEngine.iphone/main.m | 17 - TestAudioEngine.uphone/Makefile.ARM | 63 - TestAudioEngine.uphone/NewDeleteOp.cpp | 82 - .../Res/TestAudioEngine_Res.ENU.tr3 | 215 --- .../Res/TestAudioEngine_Res.ENU.tr3.tts | 9 - .../Res/TestAudioEngine_Res.TR3 | 217 --- .../Res/TestAudioEngine_Res.TRG | 19 - .../Res/TestAudioEngine_Res.h | 15 - .../Res/sounds/background.mp3.REMOVED.git-id | 1 - .../Res/testaudioengine_res_c.h | 1639 ----------------- .../Res/testaudioengine_res_def.h | 41 - .../Res/testaudioengine_res_h.h | 23 - TestAudioEngine.uphone/TG3AppDllEntry.cpp | 231 --- TestAudioEngine.uphone/TG3AppDllEntry.h | 53 - TestAudioEngine.uphone/TestAudioEngine.vcproj | 317 ---- .../TestAudioEngine.vcproj.user | 63 - TestAudioEngine.uphone/TestAudioEngineApp.cpp | 53 - TestAudioEngine.uphone/TestAudioEngineApp.h | 24 - .../TestAudioEngineEntry.cpp | 41 - TestAudioEngine.uphone/TestAudioEngineEntry.h | 13 - .../TestAudioEngineMainForm.cpp | 152 -- .../TestAudioEngineMainForm.h | 29 - .../TestAudioEngineUnicodeScript.h | 12 - .../TestAudioEngine_Arm.TMK3 | 53 - .../TestAudioEngine.win32.cpp | 67 - TestAudioEngine.win32/TestAudioEngine.win32.h | 32 - .../TestAudioEngine.win32.rc | 188 -- .../TestAudioEngine.win32.vcproj | 276 --- .../TestAudioEngine.win32Dlg.cpp | 132 -- .../TestAudioEngine.win32Dlg.h | 38 - .../res/TestAudioEngine-win32.ico | Bin 67777 -> 0 bytes .../res/TestAudioEnginewin32.rc2 | 13 - TestAudioEngine.win32/resource.h | 22 - TestAudioEngine.win32/stdafx.cpp | 8 - TestAudioEngine.win32/stdafx.h | 48 - TestAudioEngine.win32/targetver.h | 26 - 45 files changed, 5709 deletions(-) delete mode 100644 TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.h delete mode 100644 TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.m delete mode 100644 TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.h delete mode 100644 TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.mm delete mode 100644 TestAudioEngine.iphone/MainWindow.xib delete mode 100644 TestAudioEngine.iphone/Sounds/background.mp3.REMOVED.git-id delete mode 100755 TestAudioEngine.iphone/TestAudioEngine.iphone.xcodeproj/project.pbxproj delete mode 100644 TestAudioEngine.iphone/TestAudioEngine_iphoneViewController.xib delete mode 100644 TestAudioEngine.iphone/TestAudioEngine_iphone_Prefix.pch delete mode 100644 TestAudioEngine.iphone/main.m delete mode 100644 TestAudioEngine.uphone/Makefile.ARM delete mode 100644 TestAudioEngine.uphone/NewDeleteOp.cpp delete mode 100644 TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3 delete mode 100644 TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3.tts delete mode 100644 TestAudioEngine.uphone/Res/TestAudioEngine_Res.TR3 delete mode 100644 TestAudioEngine.uphone/Res/TestAudioEngine_Res.TRG delete mode 100644 TestAudioEngine.uphone/Res/TestAudioEngine_Res.h delete mode 100644 TestAudioEngine.uphone/Res/sounds/background.mp3.REMOVED.git-id delete mode 100644 TestAudioEngine.uphone/Res/testaudioengine_res_c.h delete mode 100644 TestAudioEngine.uphone/Res/testaudioengine_res_def.h delete mode 100644 TestAudioEngine.uphone/Res/testaudioengine_res_h.h delete mode 100644 TestAudioEngine.uphone/TG3AppDllEntry.cpp delete mode 100644 TestAudioEngine.uphone/TG3AppDllEntry.h delete mode 100644 TestAudioEngine.uphone/TestAudioEngine.vcproj delete mode 100644 TestAudioEngine.uphone/TestAudioEngine.vcproj.user delete mode 100644 TestAudioEngine.uphone/TestAudioEngineApp.cpp delete mode 100644 TestAudioEngine.uphone/TestAudioEngineApp.h delete mode 100644 TestAudioEngine.uphone/TestAudioEngineEntry.cpp delete mode 100644 TestAudioEngine.uphone/TestAudioEngineEntry.h delete mode 100644 TestAudioEngine.uphone/TestAudioEngineMainForm.cpp delete mode 100644 TestAudioEngine.uphone/TestAudioEngineMainForm.h delete mode 100644 TestAudioEngine.uphone/TestAudioEngineUnicodeScript.h delete mode 100644 TestAudioEngine.uphone/TestAudioEngine_Arm.TMK3 delete mode 100644 TestAudioEngine.win32/TestAudioEngine.win32.cpp delete mode 100644 TestAudioEngine.win32/TestAudioEngine.win32.h delete mode 100644 TestAudioEngine.win32/TestAudioEngine.win32.rc delete mode 100644 TestAudioEngine.win32/TestAudioEngine.win32.vcproj delete mode 100644 TestAudioEngine.win32/TestAudioEngine.win32Dlg.cpp delete mode 100644 TestAudioEngine.win32/TestAudioEngine.win32Dlg.h delete mode 100644 TestAudioEngine.win32/res/TestAudioEngine-win32.ico delete mode 100644 TestAudioEngine.win32/res/TestAudioEnginewin32.rc2 delete mode 100644 TestAudioEngine.win32/resource.h delete mode 100644 TestAudioEngine.win32/stdafx.cpp delete mode 100644 TestAudioEngine.win32/stdafx.h delete mode 100644 TestAudioEngine.win32/targetver.h diff --git a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.h b/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.h deleted file mode 100644 index c2fc8ee81b..0000000000 --- a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// TestAudioEngine_iphoneAppDelegate.h -// TestAudioEngine.iphone -// -// Created by Walzer on 11-1-8. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import - -@class TestAudioEngine_iphoneViewController; - -@interface TestAudioEngine_iphoneAppDelegate : NSObject { - UIWindow *window; - TestAudioEngine_iphoneViewController *viewController; -} - -@property (nonatomic, retain) IBOutlet UIWindow *window; -@property (nonatomic, retain) IBOutlet TestAudioEngine_iphoneViewController *viewController; - -@end - diff --git a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.m b/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.m deleted file mode 100644 index 1a6c17fb57..0000000000 --- a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneAppDelegate.m +++ /dev/null @@ -1,88 +0,0 @@ -// -// TestAudioEngine_iphoneAppDelegate.m -// TestAudioEngine.iphone -// -// Created by Walzer on 11-1-8. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import "TestAudioEngine_iphoneAppDelegate.h" -#import "TestAudioEngine_iphoneViewController.h" - -@implementation TestAudioEngine_iphoneAppDelegate - -@synthesize window; -@synthesize viewController; - - -#pragma mark - -#pragma mark Application lifecycle - -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - - // Override point for customization after application launch - - // Add the view controller's view to the window and display. - [window addSubview:viewController.view]; - [window makeKeyAndVisible]; - - return YES; -} - - -- (void)applicationWillResignActive:(UIApplication *)application { - /* - Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - */ -} - - -- (void)applicationDidEnterBackground:(UIApplication *)application { - /* - Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - If your application supports background execution, called instead of applicationWillTerminate: when the user quits. - */ -} - - -- (void)applicationWillEnterForeground:(UIApplication *)application { - /* - Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background. - */ -} - - -- (void)applicationDidBecomeActive:(UIApplication *)application { - /* - Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - */ -} - - -- (void)applicationWillTerminate:(UIApplication *)application { - /* - Called when the application is about to terminate. - See also applicationDidEnterBackground:. - */ -} - - -#pragma mark - -#pragma mark Memory management - -- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { - /* - Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. - */ -} - - -- (void)dealloc { - [viewController release]; - [window release]; - [super dealloc]; -} - - -@end diff --git a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.h b/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.h deleted file mode 100644 index 02382bbe33..0000000000 --- a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.h +++ /dev/null @@ -1,28 +0,0 @@ -// -// TestAudioEngine_iphoneViewController.h -// TestAudioEngine.iphone -// -// Created by Walzer on 11-1-8. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import - -@interface TestAudioEngine_iphoneViewController : UIViewController { - -} - -- (void) button1Click:(UIButton*)sender; -- (void) button2Click:(UIButton*)sender; -- (void) button3Click:(UIButton*)sender; -- (void) button4Click:(UIButton*)sender; -- (void) button5Click:(UIButton*)sender; -- (void) button6Click:(UIButton*)sender; -- (void) button7Click:(UIButton*)sender; -- (void) button8Click:(UIButton*)sender; -- (void) button9Click:(UIButton*)sender; -- (void) button10Click:(UIButton*)sender; -- (void) button11Click:(UIButton*)sender; -- (void) button12Click:(UIButton*)sender; -@end - diff --git a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.mm b/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.mm deleted file mode 100644 index 50d439274d..0000000000 --- a/TestAudioEngine.iphone/Classes/TestAudioEngine_iphoneViewController.mm +++ /dev/null @@ -1,263 +0,0 @@ -// -// TestAudioEngine_iphoneViewController.m -// TestAudioEngine.iphone -// -// Created by Walzer on 11-1-8. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import "TestAudioEngine_iphoneViewController.h" -#include "SimpleAudioEngine.h" - -@implementation TestAudioEngine_iphoneViewController - - - -/* -// The designated initializer. Override to perform setup that is required before the view is loaded. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { - // Custom initialization - } - return self; -} -*/ - -/* -// Implement loadView to create a view hierarchy programmatically, without using a nib. -- (void)loadView { -} -*/ - - - -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { - [super viewDidLoad]; - - // preload background music and effect music - CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic("background.mp3"); - CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadEffect("Effect1.wav"); - - // button1 play background music - UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button1 setTitle:@"play background music" forState:UIControlStateNormal]; - CGRect button1Rect = CGRectMake(10, 30, 200, 20); - [button1 setFrame:button1Rect]; - [button1 addTarget:self action:@selector(button1Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button2 stop background music - UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button2 setTitle:@"stop background music" forState:UIControlStateNormal]; - CGRect button2Rect = CGRectMake(10, 50, 200, 20); - [button2 setFrame:button2Rect]; - [button2 addTarget:self action:@selector(button2Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button3 pause background music - UIButton *button3 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button3 setTitle:@"pause background music" forState:UIControlStateNormal]; - CGRect button3Rect = CGRectMake(10, 70, 200, 20); - [button3 setFrame:button3Rect]; - [button3 addTarget:self action:@selector(button3Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button4 resume background music - UIButton *button4 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button4 setTitle:@"resume background music" forState:UIControlStateNormal]; - CGRect button4Rect = CGRectMake(10, 90, 200, 20); - [button4 setFrame:button4Rect]; - [button4 addTarget:self action:@selector(button4Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button5 rewind background music - UIButton *button5 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button5 setTitle:@"rewind background music" forState:UIControlStateNormal]; - CGRect button5Rect = CGRectMake(10, 110, 200, 20); - [button5 setFrame:button5Rect]; - [button5 addTarget:self action:@selector(button5Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button6 add background music volume - UIButton *button6 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button6 setTitle:@"add background music volume" forState:UIControlStateNormal]; - CGRect button6Rect = CGRectMake(10, 130, 230, 20); - [button6 setFrame:button6Rect]; - [button6 addTarget:self action:@selector(button6Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button7 sub background music volume - UIButton *button7 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button7 setTitle:@"sub background music volume" forState:UIControlStateNormal]; - CGRect button7Rect = CGRectMake(10, 150, 230, 20); - [button7 setFrame:button7Rect]; - [button7 addTarget:self action:@selector(button7Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button8 check if background music is playing - UIButton *button8 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button8 setTitle:@"is background music playing" forState:UIControlStateNormal]; - CGRect button8Rect = CGRectMake(10, 170, 230, 20); - [button8 setFrame:button8Rect]; - [button8 addTarget:self action:@selector(button8Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button9 play effect - UIButton *button9 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button9 setTitle:@"play effect" forState:UIControlStateNormal]; - CGRect button9Rect = CGRectMake(10, 190, 200, 20); - [button9 setFrame:button9Rect]; - [button9 addTarget:self action:@selector(button9Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button10 add effect music volume - UIButton *button10 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button10 setTitle:@"add effect music volume" forState:UIControlStateNormal]; - CGRect button10Rect = CGRectMake(10, 210, 200, 20); - [button10 setFrame:button10Rect]; - [button10 addTarget:self action:@selector(button10Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button11 sub effect music volume - UIButton *button11 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button11 setTitle:@"sub effect music volume" forState:UIControlStateNormal]; - CGRect button11Rect = CGRectMake(10, 230, 200, 20); - [button11 setFrame:button11Rect]; - [button11 addTarget:self action:@selector(button11Click:) forControlEvents:UIControlEventTouchUpInside]; - - // button12 reset - UIButton *button12 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; - [button12 setTitle:@"reset" forState:UIControlStateNormal]; - CGRect button12Rect = CGRectMake(10, 250, 200, 20); - [button12 setFrame:button12Rect]; - [button12 addTarget:self action:@selector(button12Click:) forControlEvents:UIControlEventTouchUpInside]; - - [self.view addSubview:button1]; - [self.view addSubview:button2]; - [self.view addSubview:button3]; - [self.view addSubview:button4]; - [self.view addSubview:button5]; - [self.view addSubview:button6]; - [self.view addSubview:button7]; - [self.view addSubview:button8]; - [self.view addSubview:button9]; - [self.view addSubview:button10]; - [self.view addSubview:button11]; - [self.view addSubview:button12]; -} - -// play background music -- (void)button1Click:(UIButton*)sender{ - CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic("background.mp3", true); -} - -// stop background music -- (void)button2Click:(UIButton*)sender{ - CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(); -} - -// pause background music -- (void)button3Click:(UIButton*)sender{ - CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); -} - -// resume background music -- (void)button4Click:(UIButton*)sender{ - CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); -} - -// rewind background music -- (void)button5Click:(UIButton*)sender{ - CocosDenshion::SimpleAudioEngine::sharedEngine()->rewindBackgroundMusic(); -} - -// add background music volume -- (void)button6Click:(UIButton*)sender{ - int volume = CocosDenshion::SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume(); - NSAssert(volume <= 100 && volume >= 0, @"invalid volume"); - - volume += 1; - if (volume > 100) { - volume = 100; - } - - CocosDenshion::SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(volume); -} - -// sub background music volume -- (void)button7Click:(UIButton*)sender{ - int volume = CocosDenshion::SimpleAudioEngine::sharedEngine()->getBackgroundMusicVolume(); - NSAssert(volume <= 100 && volume >= 0, @"invalid volume"); - - volume -= 1; - if (volume < 0) { - volume = 0; - } - - CocosDenshion::SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(volume); -} - -// is background music playing -- (void)button8Click:(UIButton*)sender{ - if (CocosDenshion::SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) { - NSLog(@"background music is playing"); - } - else { - NSLog(@"background music is not playing"); - } - -} - -// play effect -- (void)button9Click:(UIButton*)sender{ - CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("Effect1.wav"); -} - -// add effect music volume -- (void)button10Click:(UIButton*)sender{ - int volume = CocosDenshion::SimpleAudioEngine::sharedEngine()->getEffectsVolume(); - NSAssert(volume <= 100 && volume >= 0, @"invalid volume"); - - volume += 1; - if (volume > 100) { - volume = 100; - } - - CocosDenshion::SimpleAudioEngine::sharedEngine()->setEffectsVolume(volume); -} - -// sub effect music volume -- (void)button11Click:(UIButton*)sender{ - int volume = CocosDenshion::SimpleAudioEngine::sharedEngine()->getEffectsVolume(); - NSAssert(volume <= 100 && volume >= 0, @"invalid volume"); - - volume -= 1; - if (volume < 0) { - volume = 0; - } - - CocosDenshion::SimpleAudioEngine::sharedEngine()->setEffectsVolume(volume); -} - -// reset -- (void)button12Click:(UIButton*)sender{ - CocosDenshion::SimpleAudioEngine::sharedEngine()->end(); -} - -/* -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} -*/ - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - -- (void)dealloc { - [super dealloc]; -} - -@end diff --git a/TestAudioEngine.iphone/MainWindow.xib b/TestAudioEngine.iphone/MainWindow.xib deleted file mode 100644 index 6baece0fba..0000000000 --- a/TestAudioEngine.iphone/MainWindow.xib +++ /dev/null @@ -1,444 +0,0 @@ - - - - 1024 - 10D571 - 786 - 1038.29 - 460.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 112 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - IBCocoaTouchFramework - - - TestAudioEngine_iphoneViewController - - - 1 - - IBCocoaTouchFramework - NO - - - - 292 - {320, 480} - - 1 - MSAxIDEAA - - NO - NO - - IBCocoaTouchFramework - YES - - - - - YES - - - delegate - - - - 4 - - - - viewController - - - - 11 - - - - window - - - - 14 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - 3 - - - TestAudioEngine_iphone App Delegate - - - -2 - - - - - 10 - - - - - 12 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 10.CustomClassName - 10.IBEditorWindowLastContentRect - 10.IBPluginDependency - 12.IBEditorWindowLastContentRect - 12.IBPluginDependency - 3.CustomClassName - 3.IBPluginDependency - - - YES - UIApplication - UIResponder - TestAudioEngine_iphoneViewController - {{234, 376}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{525, 346}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - TestAudioEngine_iphoneAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 15 - - - - YES - - UIWindow - UIView - - IBUserSource - - - - - TestAudioEngine_iphoneAppDelegate - NSObject - - YES - - YES - viewController - window - - - YES - TestAudioEngine_iphoneViewController - UIWindow - - - - YES - - YES - viewController - window - - - YES - - viewController - TestAudioEngine_iphoneViewController - - - window - UIWindow - - - - - IBProjectSource - Classes/TestAudioEngine_iphoneAppDelegate.h - - - - TestAudioEngine_iphoneAppDelegate - NSObject - - IBUserSource - - - - - TestAudioEngine_iphoneViewController - UIViewController - - IBProjectSource - Classes/TestAudioEngine_iphoneViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIApplication - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIApplication.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - UIWindow - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWindow.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - TestAudioEngine.iphone.xcodeproj - 3 - 112 - - diff --git a/TestAudioEngine.iphone/Sounds/background.mp3.REMOVED.git-id b/TestAudioEngine.iphone/Sounds/background.mp3.REMOVED.git-id deleted file mode 100644 index cfc16a8a4e..0000000000 --- a/TestAudioEngine.iphone/Sounds/background.mp3.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -aec1c0a8c8068377fddca5ddd32084d8c3c3c419 \ No newline at end of file diff --git a/TestAudioEngine.iphone/TestAudioEngine.iphone.xcodeproj/project.pbxproj b/TestAudioEngine.iphone/TestAudioEngine.iphone.xcodeproj/project.pbxproj deleted file mode 100755 index 96da6fa72c..0000000000 --- a/TestAudioEngine.iphone/TestAudioEngine.iphone.xcodeproj/project.pbxproj +++ /dev/null @@ -1,467 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 45; - objects = { - -/* Begin PBXBuildFile section */ - 1D3623260D0F684500981E51 /* TestAudioEngine_iphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* TestAudioEngine_iphoneAppDelegate.m */; }; - 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; - 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; }; - 2899E5220DE3E06400AC0155 /* TestAudioEngine_iphoneViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2899E5210DE3E06400AC0155 /* TestAudioEngine_iphoneViewController.xib */; }; - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; - BF5A4C7712D85DE200F0209F /* TestAudioEngine_iphoneViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = BF5A4C7612D85DE200F0209F /* TestAudioEngine_iphoneViewController.mm */; }; - BF5A4CB212D85EEC00F0209F /* Export.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5A4C8912D85EEC00F0209F /* Export.h */; }; - BF5A4CB312D85EEC00F0209F /* SimpleAudioEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5A4C8A12D85EEC00F0209F /* SimpleAudioEngine.h */; }; - BF5A4CB412D85EEC00F0209F /* CDAudioManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5A4C8C12D85EEC00F0209F /* CDAudioManager.h */; }; - BF5A4CB512D85EEC00F0209F /* CDAudioManager.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A4C8D12D85EEC00F0209F /* CDAudioManager.m */; }; - BF5A4CB612D85EEC00F0209F /* CDConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5A4C8E12D85EEC00F0209F /* CDConfig.h */; }; - BF5A4CB712D85EEC00F0209F /* CDOpenALSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5A4C8F12D85EEC00F0209F /* CDOpenALSupport.h */; }; - BF5A4CB812D85EEC00F0209F /* CDOpenALSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A4C9012D85EEC00F0209F /* CDOpenALSupport.m */; }; - BF5A4CB912D85EEC00F0209F /* CocosDenshion.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5A4C9112D85EEC00F0209F /* CocosDenshion.h */; }; - BF5A4CBA12D85EEC00F0209F /* CocosDenshion.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A4C9212D85EEC00F0209F /* CocosDenshion.m */; }; - BF5A4CBB12D85EEC00F0209F /* SimpleAudioEngine.mm in Sources */ = {isa = PBXBuildFile; fileRef = BF5A4C9312D85EEC00F0209F /* SimpleAudioEngine.mm */; }; - BF5A4CBC12D85EEC00F0209F /* SimpleAudioEngine_objc.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5A4C9412D85EEC00F0209F /* SimpleAudioEngine_objc.h */; }; - BF5A4CBD12D85EEC00F0209F /* SimpleAudioEngine_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5A4C9512D85EEC00F0209F /* SimpleAudioEngine_objc.m */; }; - BF5A4CD212D85F1400F0209F /* libCocosDenshion.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5A4C8412D85EDE00F0209F /* libCocosDenshion.a */; }; - BF5A4D7B12D8654200F0209F /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5A4D7A12D8654200F0209F /* OpenAL.framework */; }; - BF5A4D8212D8655F00F0209F /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5A4D8112D8655F00F0209F /* AVFoundation.framework */; }; - BF5A4D8912D8657800F0209F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF5A4D8812D8657800F0209F /* AudioToolbox.framework */; }; - BF5A4DAE12D86B7B00F0209F /* background.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = BF5A4DAB12D86B7B00F0209F /* background.mp3 */; }; - BF5A4DAF12D86B7B00F0209F /* Effect1.wav in Resources */ = {isa = PBXBuildFile; fileRef = BF5A4DAC12D86B7B00F0209F /* Effect1.wav */; }; - BF5A4DB012D86B7B00F0209F /* Effect2.wav in Resources */ = {isa = PBXBuildFile; fileRef = BF5A4DAD12D86B7B00F0209F /* Effect2.wav */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - BF5A4CD012D85F0E00F0209F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; - proxyType = 1; - remoteGlobalIDString = BF5A4C8312D85EDE00F0209F; - remoteInfo = CocosDenshion; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 1D3623240D0F684500981E51 /* TestAudioEngine_iphoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestAudioEngine_iphoneAppDelegate.h; sourceTree = ""; }; - 1D3623250D0F684500981E51 /* TestAudioEngine_iphoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestAudioEngine_iphoneAppDelegate.m; sourceTree = ""; }; - 1D6058910D05DD3D006BFB54 /* TestAudioEngine.iphone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestAudioEngine.iphone.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 288765A40DF7441C002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 2899E5210DE3E06400AC0155 /* TestAudioEngine_iphoneViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TestAudioEngine_iphoneViewController.xib; sourceTree = ""; }; - 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; - 28D7ACF60DDB3853001CB0EB /* TestAudioEngine_iphoneViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestAudioEngine_iphoneViewController.h; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 32CA4F630368D1EE00C91783 /* TestAudioEngine_iphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestAudioEngine_iphone_Prefix.pch; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* TestAudioEngine_iphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TestAudioEngine_iphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; - BF5A4C7612D85DE200F0209F /* TestAudioEngine_iphoneViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TestAudioEngine_iphoneViewController.mm; sourceTree = ""; }; - BF5A4C8412D85EDE00F0209F /* libCocosDenshion.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libCocosDenshion.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BF5A4C8912D85EEC00F0209F /* Export.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Export.h; sourceTree = ""; }; - BF5A4C8A12D85EEC00F0209F /* SimpleAudioEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleAudioEngine.h; sourceTree = ""; }; - BF5A4C8C12D85EEC00F0209F /* CDAudioManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDAudioManager.h; sourceTree = ""; }; - BF5A4C8D12D85EEC00F0209F /* CDAudioManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDAudioManager.m; sourceTree = ""; }; - BF5A4C8E12D85EEC00F0209F /* CDConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDConfig.h; sourceTree = ""; }; - BF5A4C8F12D85EEC00F0209F /* CDOpenALSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDOpenALSupport.h; sourceTree = ""; }; - BF5A4C9012D85EEC00F0209F /* CDOpenALSupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDOpenALSupport.m; sourceTree = ""; }; - BF5A4C9112D85EEC00F0209F /* CocosDenshion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CocosDenshion.h; sourceTree = ""; }; - BF5A4C9212D85EEC00F0209F /* CocosDenshion.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CocosDenshion.m; sourceTree = ""; }; - BF5A4C9312D85EEC00F0209F /* SimpleAudioEngine.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SimpleAudioEngine.mm; sourceTree = ""; }; - BF5A4C9412D85EEC00F0209F /* SimpleAudioEngine_objc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SimpleAudioEngine_objc.h; sourceTree = ""; }; - BF5A4C9512D85EEC00F0209F /* SimpleAudioEngine_objc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SimpleAudioEngine_objc.m; sourceTree = ""; }; - BF5A4D7A12D8654200F0209F /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; - BF5A4D8112D8655F00F0209F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; - BF5A4D8812D8657800F0209F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; - BF5A4DAB12D86B7B00F0209F /* background.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = background.mp3; sourceTree = ""; }; - BF5A4DAC12D86B7B00F0209F /* Effect1.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = Effect1.wav; sourceTree = ""; }; - BF5A4DAD12D86B7B00F0209F /* Effect2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = Effect2.wav; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 288765A50DF7441C002DB57D /* CoreGraphics.framework in Frameworks */, - BF5A4CD212D85F1400F0209F /* libCocosDenshion.a in Frameworks */, - BF5A4D7B12D8654200F0209F /* OpenAL.framework in Frameworks */, - BF5A4D8212D8655F00F0209F /* AVFoundation.framework in Frameworks */, - BF5A4D8912D8657800F0209F /* AudioToolbox.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BF5A4C8212D85EDE00F0209F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 080E96DDFE201D6D7F000001 /* Classes */ = { - isa = PBXGroup; - children = ( - BF5A4C7612D85DE200F0209F /* TestAudioEngine_iphoneViewController.mm */, - 1D3623240D0F684500981E51 /* TestAudioEngine_iphoneAppDelegate.h */, - 1D3623250D0F684500981E51 /* TestAudioEngine_iphoneAppDelegate.m */, - 28D7ACF60DDB3853001CB0EB /* TestAudioEngine_iphoneViewController.h */, - ); - path = Classes; - sourceTree = ""; - }; - 19C28FACFE9D520D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - 1D6058910D05DD3D006BFB54 /* TestAudioEngine.iphone.app */, - BF5A4C8412D85EDE00F0209F /* libCocosDenshion.a */, - ); - name = Products; - sourceTree = ""; - }; - 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { - isa = PBXGroup; - children = ( - BF5A4DAA12D86B7B00F0209F /* Sounds */, - BF5A4C8712D85EEC00F0209F /* CocosDenshion */, - 080E96DDFE201D6D7F000001 /* Classes */, - 29B97315FDCFA39411CA2CEA /* Other Sources */, - 29B97317FDCFA39411CA2CEA /* Resources */, - 29B97323FDCFA39411CA2CEA /* Frameworks */, - 19C28FACFE9D520D11CA2CBB /* Products */, - BF5A4D7A12D8654200F0209F /* OpenAL.framework */, - BF5A4D8112D8655F00F0209F /* AVFoundation.framework */, - BF5A4D8812D8657800F0209F /* AudioToolbox.framework */, - ); - name = CustomTemplate; - sourceTree = ""; - }; - 29B97315FDCFA39411CA2CEA /* Other Sources */ = { - isa = PBXGroup; - children = ( - 32CA4F630368D1EE00C91783 /* TestAudioEngine_iphone_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, - ); - name = "Other Sources"; - sourceTree = ""; - }; - 29B97317FDCFA39411CA2CEA /* Resources */ = { - isa = PBXGroup; - children = ( - 2899E5210DE3E06400AC0155 /* TestAudioEngine_iphoneViewController.xib */, - 28AD733E0D9D9553002E5188 /* MainWindow.xib */, - 8D1107310486CEB800E47090 /* TestAudioEngine_iphone-Info.plist */, - ); - name = Resources; - sourceTree = ""; - }; - 29B97323FDCFA39411CA2CEA /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, - 1D30AB110D05D00D00671497 /* Foundation.framework */, - 288765A40DF7441C002DB57D /* CoreGraphics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - BF5A4C8712D85EEC00F0209F /* CocosDenshion */ = { - isa = PBXGroup; - children = ( - BF5A4C8812D85EEC00F0209F /* include */, - BF5A4C8B12D85EEC00F0209F /* iphone */, - ); - name = CocosDenshion; - path = ../CocosDenshion; - sourceTree = SOURCE_ROOT; - }; - BF5A4C8812D85EEC00F0209F /* include */ = { - isa = PBXGroup; - children = ( - BF5A4C8912D85EEC00F0209F /* Export.h */, - BF5A4C8A12D85EEC00F0209F /* SimpleAudioEngine.h */, - ); - path = include; - sourceTree = ""; - }; - BF5A4C8B12D85EEC00F0209F /* iphone */ = { - isa = PBXGroup; - children = ( - BF5A4C8C12D85EEC00F0209F /* CDAudioManager.h */, - BF5A4C8D12D85EEC00F0209F /* CDAudioManager.m */, - BF5A4C8E12D85EEC00F0209F /* CDConfig.h */, - BF5A4C8F12D85EEC00F0209F /* CDOpenALSupport.h */, - BF5A4C9012D85EEC00F0209F /* CDOpenALSupport.m */, - BF5A4C9112D85EEC00F0209F /* CocosDenshion.h */, - BF5A4C9212D85EEC00F0209F /* CocosDenshion.m */, - BF5A4C9312D85EEC00F0209F /* SimpleAudioEngine.mm */, - BF5A4C9412D85EEC00F0209F /* SimpleAudioEngine_objc.h */, - BF5A4C9512D85EEC00F0209F /* SimpleAudioEngine_objc.m */, - ); - path = iphone; - sourceTree = ""; - }; - BF5A4DAA12D86B7B00F0209F /* Sounds */ = { - isa = PBXGroup; - children = ( - BF5A4DAB12D86B7B00F0209F /* background.mp3 */, - BF5A4DAC12D86B7B00F0209F /* Effect1.wav */, - BF5A4DAD12D86B7B00F0209F /* Effect2.wav */, - ); - path = Sounds; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - BF5A4C8012D85EDE00F0209F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - BF5A4CB212D85EEC00F0209F /* Export.h in Headers */, - BF5A4CB312D85EEC00F0209F /* SimpleAudioEngine.h in Headers */, - BF5A4CB412D85EEC00F0209F /* CDAudioManager.h in Headers */, - BF5A4CB612D85EEC00F0209F /* CDConfig.h in Headers */, - BF5A4CB712D85EEC00F0209F /* CDOpenALSupport.h in Headers */, - BF5A4CB912D85EEC00F0209F /* CocosDenshion.h in Headers */, - BF5A4CBC12D85EEC00F0209F /* SimpleAudioEngine_objc.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 1D6058900D05DD3D006BFB54 /* TestAudioEngine.iphone */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "TestAudioEngine.iphone" */; - buildPhases = ( - 1D60588D0D05DD3D006BFB54 /* Resources */, - 1D60588E0D05DD3D006BFB54 /* Sources */, - 1D60588F0D05DD3D006BFB54 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - BF5A4CD112D85F0E00F0209F /* PBXTargetDependency */, - ); - name = TestAudioEngine.iphone; - productName = TestAudioEngine.iphone; - productReference = 1D6058910D05DD3D006BFB54 /* TestAudioEngine.iphone.app */; - productType = "com.apple.product-type.application"; - }; - BF5A4C8312D85EDE00F0209F /* CocosDenshion */ = { - isa = PBXNativeTarget; - buildConfigurationList = BF5A4CCF12D85EEC00F0209F /* Build configuration list for PBXNativeTarget "CocosDenshion" */; - buildPhases = ( - BF5A4C8012D85EDE00F0209F /* Headers */, - BF5A4C8112D85EDE00F0209F /* Sources */, - BF5A4C8212D85EDE00F0209F /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CocosDenshion; - productName = CocosDenshion; - productReference = BF5A4C8412D85EDE00F0209F /* libCocosDenshion.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 29B97313FDCFA39411CA2CEA /* Project object */ = { - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestAudioEngine.iphone" */; - compatibilityVersion = "Xcode 3.1"; - developmentRegion = English; - hasScannedForEncodings = 1; - knownRegions = ( - English, - Japanese, - French, - German, - ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 1D6058900D05DD3D006BFB54 /* TestAudioEngine.iphone */, - BF5A4C8312D85EDE00F0209F /* CocosDenshion */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 1D60588D0D05DD3D006BFB54 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, - 2899E5220DE3E06400AC0155 /* TestAudioEngine_iphoneViewController.xib in Resources */, - BF5A4DAE12D86B7B00F0209F /* background.mp3 in Resources */, - BF5A4DAF12D86B7B00F0209F /* Effect1.wav in Resources */, - BF5A4DB012D86B7B00F0209F /* Effect2.wav in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 1D60588E0D05DD3D006BFB54 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1D60589B0D05DD56006BFB54 /* main.m in Sources */, - 1D3623260D0F684500981E51 /* TestAudioEngine_iphoneAppDelegate.m in Sources */, - BF5A4C7712D85DE200F0209F /* TestAudioEngine_iphoneViewController.mm in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BF5A4C8112D85EDE00F0209F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - BF5A4CB512D85EEC00F0209F /* CDAudioManager.m in Sources */, - BF5A4CB812D85EEC00F0209F /* CDOpenALSupport.m in Sources */, - BF5A4CBA12D85EEC00F0209F /* CocosDenshion.m in Sources */, - BF5A4CBB12D85EEC00F0209F /* SimpleAudioEngine.mm in Sources */, - BF5A4CBD12D85EEC00F0209F /* SimpleAudioEngine_objc.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - BF5A4CD112D85F0E00F0209F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = BF5A4C8312D85EDE00F0209F /* CocosDenshion */; - targetProxy = BF5A4CD012D85F0E00F0209F /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 1D6058940D05DD3E006BFB54 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = TestAudioEngine_iphone_Prefix.pch; - INFOPLIST_FILE = "TestAudioEngine_iphone-Info.plist"; - PRODUCT_NAME = TestAudioEngine.iphone; - }; - name = Debug; - }; - 1D6058950D05DD3E006BFB54 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = TestAudioEngine_iphone_Prefix.pch; - INFOPLIST_FILE = "TestAudioEngine_iphone-Info.plist"; - PRODUCT_NAME = TestAudioEngine.iphone; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - BF5A4C8512D85EDE00F0209F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - INSTALL_PATH = /usr/local/lib; - PREBINDING = NO; - PRODUCT_NAME = CocosDenshion; - }; - name = Debug; - }; - BF5A4C8612D85EDE00F0209F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_MODEL_TUNING = G5; - INSTALL_PATH = /usr/local/lib; - PREBINDING = NO; - PRODUCT_NAME = CocosDenshion; - ZERO_LINK = NO; - }; - name = Release; - }; - C01FCF4F08A954540054247B /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - PREBINDING = NO; - SDKROOT = iphoneos; - }; - name = Debug; - }; - C01FCF5008A954540054247B /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; - PREBINDING = NO; - SDKROOT = iphoneos; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "TestAudioEngine.iphone" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1D6058940D05DD3E006BFB54 /* Debug */, - 1D6058950D05DD3E006BFB54 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - BF5A4CCF12D85EEC00F0209F /* Build configuration list for PBXNativeTarget "CocosDenshion" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BF5A4C8512D85EDE00F0209F /* Debug */, - BF5A4C8612D85EDE00F0209F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C01FCF4E08A954540054247B /* Build configuration list for PBXProject "TestAudioEngine.iphone" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C01FCF4F08A954540054247B /* Debug */, - C01FCF5008A954540054247B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; -} diff --git a/TestAudioEngine.iphone/TestAudioEngine_iphoneViewController.xib b/TestAudioEngine.iphone/TestAudioEngine_iphoneViewController.xib deleted file mode 100644 index 26697594b4..0000000000 --- a/TestAudioEngine.iphone/TestAudioEngine_iphoneViewController.xib +++ /dev/null @@ -1,156 +0,0 @@ - - - - 800 - 10C540 - 759 - 1038.25 - 458.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 77 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - {320, 460} - - - 3 - MC43NQA - - 2 - - - NO - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 7 - - - - - YES - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 6 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 6.IBEditorWindowLastContentRect - 6.IBPluginDependency - - - YES - TestAudioEngine_iphoneViewController - UIResponder - {{239, 654}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 7 - - - - YES - - TestAudioEngine_iphoneViewController - UIViewController - - IBProjectSource - Classes/TestAudioEngine_iphoneViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - TestAudioEngine.iphone.xcodeproj - 3 - 77 - - - diff --git a/TestAudioEngine.iphone/TestAudioEngine_iphone_Prefix.pch b/TestAudioEngine.iphone/TestAudioEngine_iphone_Prefix.pch deleted file mode 100644 index 0b5d682dfd..0000000000 --- a/TestAudioEngine.iphone/TestAudioEngine_iphone_Prefix.pch +++ /dev/null @@ -1,8 +0,0 @@ -// -// Prefix header for all source files of the 'TestAudioEngine.iphone' target in the 'TestAudioEngine.iphone' project -// - -#ifdef __OBJC__ - #import - #import -#endif diff --git a/TestAudioEngine.iphone/main.m b/TestAudioEngine.iphone/main.m deleted file mode 100644 index 580f1972cb..0000000000 --- a/TestAudioEngine.iphone/main.m +++ /dev/null @@ -1,17 +0,0 @@ -// -// main.m -// TestAudioEngine.iphone -// -// Created by Walzer on 11-1-8. -// Copyright 2011 __MyCompanyName__. All rights reserved. -// - -#import - -int main(int argc, char *argv[]) { - - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; - int retVal = UIApplicationMain(argc, argv, nil, nil); - [pool release]; - return retVal; -} diff --git a/TestAudioEngine.uphone/Makefile.ARM b/TestAudioEngine.uphone/Makefile.ARM deleted file mode 100644 index a06ad8d04a..0000000000 --- a/TestAudioEngine.uphone/Makefile.ARM +++ /dev/null @@ -1,63 +0,0 @@ - -############################################################################ -# -# Makefile for building : TestAudioEngine_Arm.TMK3 -# Created by TMK3_V2.3, please do not modify. -# -############################################################################# - -TO_PROJECT_ROOT = ../../PRJ_TG3 -OUTPUT_FILENAME = libTestAudioEngine.so - -include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_Base_DynamicLib.ARM -include $(TO_PROJECT_ROOT)/MakeInclude/Makefile_TOPS_Def.ARM - -DEFINES += -DUNDER_UPHONE -INCLUDE_PATH += -I. -I./Res \ - -I../CocosDenshion/include -LIBS += -lCocosDenshionStatic -lTSoundPlayer -lz - -OBJECTS_DIR = ./Debug-ARM -DESTDIR = $(TO_PROJECT_ROOT)/$(BIN_OUTPUT_DIR) -TARGET = $(DESTDIR)/$(OUTPUT_FILENAME) - -DEL_FILE = rm -f -MKDIR = mkdir -p - -first: all - -OBJECTS = \ - $(OBJECTS_DIR)/TestAudioEngineApp.o \ - $(OBJECTS_DIR)/TestAudioEngineEntry.o \ - $(OBJECTS_DIR)/TestAudioEngineMainForm.o \ - $(OBJECTS_DIR)/TG3AppDllEntry.o - -ADD_OBJECTS += - -$(OBJECTS_DIR) : - $(MKDIR) $(OBJECTS_DIR) - -$(DESTDIR) : - $(MKDIR) $(DESTDIR) - -all : $(OBJECTS_DIR) $(DESTDIR) $(TARGET) - -$(TARGET) : $(OBJECTS) - $(LINK) $(LINK_FLAGS) -o $(TARGET) $(SYS_OBJECTS) $(OBJECTS) $(ADD_OBJECTS) $(LIBS) $(SYS_LIBS) - -clean : - -$(DEL_FILE) $(OBJECTS) - -$(DEL_FILE) $(TARGET) - -$(OBJECTS_DIR)/TestAudioEngineApp.o : ./TestAudioEngineApp.cpp - $(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/TestAudioEngineApp.o ./TestAudioEngineApp.cpp - -$(OBJECTS_DIR)/TestAudioEngineEntry.o : ./TestAudioEngineEntry.cpp - $(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/TestAudioEngineEntry.o ./TestAudioEngineEntry.cpp - -$(OBJECTS_DIR)/TestAudioEngineMainForm.o : ./TestAudioEngineMainForm.cpp - $(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/TestAudioEngineMainForm.o ./TestAudioEngineMainForm.cpp - -$(OBJECTS_DIR)/TG3AppDllEntry.o : ./TG3AppDllEntry.cpp - $(CXX) -c $(CXX_FLAGS) $(INCLUDE_PATH) $(LAST_INCLUDE_PATH) -o $(OBJECTS_DIR)/TG3AppDllEntry.o ./TG3AppDllEntry.cpp - diff --git a/TestAudioEngine.uphone/NewDeleteOp.cpp b/TestAudioEngine.uphone/NewDeleteOp.cpp deleted file mode 100644 index e773818e7a..0000000000 --- a/TestAudioEngine.uphone/NewDeleteOp.cpp +++ /dev/null @@ -1,82 +0,0 @@ - -/*! -* @file NewDeleteOp.cpp -* @author È«ÖÇ´ï -* @brief -* -* @section Copyright -* =======================================================================
-*
-* Copyright (c) 2005-2010 Tranzda Technologies Co.,Ltd.
-* ÉîÛÚÊÐÈ«ÖÇ´ï¿Æ¼¼ÓÐÏÞ¹«Ë¾ °æȨËùÓÐ2005-2010
-*
-* PROPRIETARY RIGHTS of Tranzda Technologies Co.,Ltd. are involved in
-* the subject matter of this material. All manufacturing, reproduction,
-* use, and sales rights pertaining to this subject matter are governed
-* by the license agreement. The recipient of this software implicitly
-* accepts the terms of the license.
-* ±¾Èí¼þÎĵµ×ÊÁÏÊÇÉîÛÚÊÐÈ«ÖÇ´ï¿Æ¼¼ÓÐÏÞ¹«Ë¾µÄºÏ·¨×ʲú£¬ÈκÎÈËÊ¿ÔĶÁºÍʹ
-* Óñ¾×ÊÁϱØÐë»ñµÃÏàÓ¦µÄÊéÃæÊÚȨ,³Ðµ£±£ÃÜÔðÈκͽÓÊÜÏàÓ¦µÄ·¨ÂÉÔ¼Êø¡£
-*
-* ¹«Ë¾ÍøÖ·£º http://www.tranzda.com
-* ¹«Ë¾ÓÊÏ䣺support@tranzda.com
-* =======================================================================
-*/ - -#include "ssTypes.h" -#include "TG3_Type.h" -#include "TG3_Memory.h" - -#ifdef new -#undef new -#endif - -#ifdef delete -#undef delete -#endif - -#ifndef _WIN32 - #define __cdecl -#endif - -void * __cdecl operator new(unsigned int size) -{ - return TMalloc(size); -} - -void * __cdecl operator new[](unsigned int size) -{ - return TMalloc(size); -} - -void * __cdecl operator new(unsigned int size, const unsigned short * fileName, int lineNo) -{ - return TMallocEx(size, fileName, lineNo); -} - -void * __cdecl operator new[](unsigned int size, const unsigned short * fileName, int lineNo) -{ - return TMallocEx(size, fileName, lineNo); -} - -void __cdecl operator delete(void *p) -{ - TFree(p); -} - -void __cdecl operator delete[](void *p) -{ - TFree(p); -} - -void __cdecl operator delete(void *p, const unsigned short * fileName, int lineNo) -{ - TFreeEx(p, fileName, lineNo); -} - -void __cdecl operator delete[](void *p, const unsigned short * fileName, int lineNo) -{ - TFreeEx(p, fileName, lineNo); -} - - diff --git a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3 b/TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3 deleted file mode 100644 index 831af8450c..0000000000 --- a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3 +++ /dev/null @@ -1,215 +0,0 @@ - -// Original file name: TestAudioEngine_Res.ENU.tr3 -// Generated by TOPS Builder 1.2.4.249 Date:2011-1-14 - - -//$VERSION 60006 -//$SETTINGS -//$Begin -//$VCPRJFILE=$002E$002E$005C$0054$0065$0073$0074$0041$0075$0064$0069$006F$0045$006E$0067$0069$006E$0065$002E$0076$0063$0070$0072$006F$006A -//$End -LANGUAGE = 1033 -// ImageLists - -// Project -PROJECT -BEGIN - ScreenWidth 320 - ScreenHeight 480 - ScreenDPI 16500 -END - - -// TComObject - -// Forms - -FORM ID Form1002 AT(0,0,320,480) - FRAME - NOSAVEBEHIND - BIClose - DisableSystemStatusBar - FullScreen - VISIBLED - ENABLED - CHARSET 0 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 -BEGIN - TITLE $0054$0065$0073$0074$0041$0075$0064$0069$006F$0045$006E$0067$0069$006E$0065 - - BUTTON $0050$006C$0061$0079$0042$0061$0063$006B$0067$0072$006F$0075$006E$0064$004D$0075$0073$0069$0063 ID PlayBack AT(5,60,200,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 1 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0053$0074$006F$0070$0042$0061$0063$006B$0067$0072$006F$0075$006E$0064$004D$0075$0073$0069$0063 ID StopBack AT(5,95,200,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 2 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $004C$006F$0061$0064$0045$0066$0066$0065$0063$0074 ID LoadEffect AT(5,250,107,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 3 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0050$006C$0061$0079$0045$0066$0066$0065$0063$0074 ID PlayEffect AT(5,288,107,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 4 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0055$006E$004C$006F$0061$0064$0045$0066$0066$0065$0063$0074 ID UnLoadBtn AT(125,250,120,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 5 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0050$0061$0075$0073$0065 ID PauseBack AT(209,60,100,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 6 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0042$0061$0063$006B$0056$006F$006C$0075$006D$0065$0055$0070 ID BackVolumeUp AT(5,135,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 7 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0042$0061$0063$006B$0056$006F$006C$0075$006D$0065$0044$006F$0077$006E ID BackVolumeDown AT(5,180,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 8 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0045$0066$0066$0065$0063$0074$0056$006F$006C$0075$006D$0065$0055$0070 ID EffectVolumeUp AT(5,330,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 9 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0045$0066$0066$0065$0063$0074$0056$006F$006C$0075$006D$0065$0044$006F$0077$006E ID EffectVolumeDown AT(5,380,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 10 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 -END - -// Menus - -// Alerts ¾¯¸æÏûÏ¢ - -// Strings - -// Fonts - -// Bitmaps - -IMAGEFOLDER ID ResFolder1001 FOLDERNAME $0052$006F$006F$0074$0028$0041$006C$006C$0029 -// Îļþ¼Ð: Root(All) -BEGIN -END -// raw data - -// Application - diff --git a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3.tts b/TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3.tts deleted file mode 100644 index 3f3db8ceba..0000000000 --- a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.ENU.tr3.tts +++ /dev/null @@ -1,9 +0,0 @@ - -// Tranzda Translation File. -// TOPS Builder use infomation contained by this file to -// update the controls' trnaslation status. - -// Original file name: TestAudioEngine_Res.ENU.tr3.tts -// Generated by TOPS Builder 1.2.4.249 Date:2011-1-14 - - diff --git a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.TR3 b/TestAudioEngine.uphone/Res/TestAudioEngine_Res.TR3 deleted file mode 100644 index 9e898d9a07..0000000000 --- a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.TR3 +++ /dev/null @@ -1,217 +0,0 @@ - -// Original file name: TestAudioEngine_Res.TR3 -// Generated by TOPS Builder 1.2.4.249 Date:2011-1-14 - - -#include "TestAudioEngine_Res.h" - -//$VERSION 60006 -//$SETTINGS -//$Begin -//$VCPRJFILE=$002E$002E$005C$0054$0065$0073$0074$0041$0075$0064$0069$006F$0045$006E$0067$0069$006E$0065$002E$0076$0063$0070$0072$006F$006A -//$End -LANGUAGE = 2052 -// ImageLists - -// Project -PROJECT -BEGIN - ScreenWidth 320 - ScreenHeight 480 - ScreenDPI 16500 -END - - -// TComObject - -// Forms - -FORM ID Form1002 AT(0,0,320,480) - FRAME - NOSAVEBEHIND - BIClose - DisableSystemStatusBar - FullScreen - VISIBLED - ENABLED - CHARSET 0 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 -BEGIN - TITLE $0054$0065$0073$0074$0041$0075$0064$0069$006F$0045$006E$0067$0069$006E$0065 - - BUTTON $0050$006C$0061$0079$0042$0061$0063$006B$0067$0072$006F$0075$006E$0064$004D$0075$0073$0069$0063 ID PlayBack AT(5,60,200,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 1 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0053$0074$006F$0070$0042$0061$0063$006B$0067$0072$006F$0075$006E$0064$004D$0075$0073$0069$0063 ID StopBack AT(5,95,200,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 2 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $004C$006F$0061$0064$0045$0066$0066$0065$0063$0074 ID LoadEffect AT(5,250,107,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 3 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0050$006C$0061$0079$0045$0066$0066$0065$0063$0074 ID PlayEffect AT(5,288,107,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 4 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0055$006E$004C$006F$0061$0064$0045$0066$0066$0065$0063$0074 ID UnLoadBtn AT(125,250,120,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 5 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0050$0061$0075$0073$0065 ID PauseBack AT(209,60,100,30) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 6 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0042$0061$0063$006B$0056$006F$006C$0075$006D$0065$0055$0070 ID BackVolumeUp AT(5,135,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 7 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0042$0061$0063$006B$0056$006F$006C$0075$006D$0065$0044$006F$0077$006E ID BackVolumeDown AT(5,180,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 8 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0045$0066$0066$0065$0063$0074$0056$006F$006C$0075$006D$0065$0055$0070 ID EffectVolumeUp AT(5,330,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 9 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 - - BUTTON $0045$0066$0066$0065$0063$0074$0056$006F$006C$0075$006D$0065$0044$006F$0077$006E ID EffectVolumeDown AT(5,380,170,40) LEFTANCHOR FRAME FONT 0 STYLE 0 - VISIBLED - ENABLED - CHARSET 0 - TABSTOP - TABORDER 10 - UseSYSDefColor - TRANSPARENT - BACKCOLOR $0003 - FORECOLOR $0002 - FOCUSBACKCOLOR $0006 - FOCUSFORECOLOR $0007 - SELECTEDFORECOLOR $0005 - SELECTEDBACKCOLOR $0004 -END - -// Menus - -// Alerts ¾¯¸æÏûÏ¢ - -// Strings - -// Fonts - -// Bitmaps - -IMAGEFOLDER ID ResFolder1001 FOLDERNAME $0052$006F$006F$0074$0028$0041$006C$006C$0029 -// Îļþ¼Ð: Root(All) -BEGIN -END -// raw data - -// Application - diff --git a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.TRG b/TestAudioEngine.uphone/Res/TestAudioEngine_Res.TRG deleted file mode 100644 index 25f58baf60..0000000000 --- a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.TRG +++ /dev/null @@ -1,19 +0,0 @@ -// Application resource group file. - -// Original file name: TestAudioEngine_Res.TRG -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - - -VERSION 60001 -PROJECT -Begin - IsLangBase - FileName = ".\TestAudioEngine_Res.TR3" -End - -PROJECT -Begin - FileName = ".\TestAudioEngine_Res.ENU.tr3" -End - diff --git a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.h b/TestAudioEngine.uphone/Res/TestAudioEngine_Res.h deleted file mode 100644 index 161ef66659..0000000000 --- a/TestAudioEngine.uphone/Res/TestAudioEngine_Res.h +++ /dev/null @@ -1,15 +0,0 @@ -// Original file name: TestAudioEngine_Res.h -// Generated by TOPS Builder 1.2.4.249 Date:2011-1-14 - -#define ResFolder1001 1001 -#define Form1002 1002 -#define PlayBack 1003 -#define StopBack 1004 -#define LoadEffect 1005 -#define PlayEffect 1007 -#define UnLoadBtn 1008 -#define PauseBack 1012 -#define BackVolumeUp 1013 -#define BackVolumeDown 1014 -#define EffectVolumeUp 1015 -#define EffectVolumeDown 1016 diff --git a/TestAudioEngine.uphone/Res/sounds/background.mp3.REMOVED.git-id b/TestAudioEngine.uphone/Res/sounds/background.mp3.REMOVED.git-id deleted file mode 100644 index cfc16a8a4e..0000000000 --- a/TestAudioEngine.uphone/Res/sounds/background.mp3.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -aec1c0a8c8068377fddca5ddd32084d8c3c3c419 \ No newline at end of file diff --git a/TestAudioEngine.uphone/Res/testaudioengine_res_c.h b/TestAudioEngine.uphone/Res/testaudioengine_res_c.h deleted file mode 100644 index 1bda0234a7..0000000000 --- a/TestAudioEngine.uphone/Res/testaudioengine_res_c.h +++ /dev/null @@ -1,1639 +0,0 @@ -//------------------------------------------------------------------------------ -// TestAudioEngine_Res_c.h -// ×ÊÔ´±àÒëÆ÷ת»»ÎļþÊý¾Ý¶¨ÒåÎļþ -// -// -// Copyright (C) Tranzda CORPORATION -// -//---©È±àÒëÆ÷ÐÅÏ¢©À--- -// ±àÒëÆ÷Ãû³Æ: TR3C.exe -// ±àÒëÆ÷°æ±¾: TG3 ×ÊÔ´±àÒëÆ÷ °æ±¾V1.5 Build 94 -// -//---©È×¢Òâ©À--- -// ¾¯¸æ£ºÎ´¾­ÔÊÐí£¬ÈκÎÈ˲»×¼ÉÃ×ÔÐ޸ĴËÎļþ!!!·ñÔòºó¹û×Ô¸º! -// -//------------------------------------------------------------------------------ -#include "testaudioengine_res_h.h" //ÀàÐͶ¨ÒåÍ·Îļþ -#ifndef WIN32 -//#pragma diag_remark 1296 -#endif -#if 11 -#include "TCOM.h" -#include "ssAppMgr.h" -#include "TG3AppDllEntry.h" - -#ifdef __TCOM_SUPPORT__ - -#ifdef __cplusplus -extern "C" { -#endif - - //ʵÏÖTCOMËùÐèÒªµÄDLLº¯Êý - - //DLLÌṩµÄ»ñÈ¡Ö¸¶¨CLSIDµÄÖ¸¶¨½Ó¿Ú - SS_EXPORT HRESULT TDllGetClassObject(TREFCLSID rclsid, TREFIID riid, LPVOID * ppv); - - //DLLÌṩµÄ²éѯDLLÄÜ·ñ±»Unload - SS_EXPORT HRESULT TDllCanUnloadNow(void); - - //DLLÌṩµÄ°ÑDLLµÄTCOMÐÅÏ¢¼ÓÈëµ½×¢²á±í - SS_EXPORT HRESULT TDllRegisterServer(void); - - //DLLÌṩµÄ°ÑDLLµÄTCOMÐÅÏ¢´Ó×¢²á±íÖÐɾ³ý - SS_EXPORT HRESULT TDllUnregisterServer(void); - -#ifdef __cplusplus -} -#endif - -#ifdef __TCOM_OUTPUT_DEBUG_INFO__ -#include -#endif - -//TCOMʵÏÖÖÐÐèÒªÓõ½µÄº¯ÊýºÍÊý¾Ý - -//ʵÀý¶ÔÏó±»ÒýÓõĴÎÊý -static Int32 __TCOM_ClsidInstanceRefCount; - -//ClassFactory±»LockedµÄ´ÎÊý -static Int32 __TCOM_CalssFactoryLockedCount; - -//×ö±ØÒªµÄ³õʼ»¯ -static Int32 __TCOM_Init() -{ - __TCOM_ClsidInstanceRefCount = 0; - __TCOM_CalssFactoryLockedCount = 0; - return 0; -} - -//×ö±ØÒªµÄÇå³ý¹¤×÷ -static Int32 __TCOM_DeInit() -{ - return 0; -} - -//DLLÈ«¾ÖʹÓãºÔö¼Ó¶ÔÏóʵÀý±»ÒýÓôÎÊý -Int32 TCOM_AddClsidInstanceRefCount() -{ - __TCOM_ClsidInstanceRefCount++; -#ifdef __TCOM_OUTPUT_DEBUG_INFO__ - SS_printf("[TCOM_SYSTEM] TCOM_AddClsidInstanceRefCount: address: %p, value: %d.\n", - &__TCOM_ClsidInstanceRefCount, __TCOM_ClsidInstanceRefCount); -#endif - if(__TCOM_ClsidInstanceRefCount <= 0) - { - return 0; - } - return __TCOM_ClsidInstanceRefCount; -} - -//DLLÈ«¾ÖʹÓ㺼õÉÙ¶ÔÏóʵÀý±»ÒýÓôÎÊý -Int32 TCOM_DecClsidInstanceRefCount() -{ - __TCOM_ClsidInstanceRefCount--; -#ifdef __TCOM_OUTPUT_DEBUG_INFO__ - SS_printf("[TCOM_SYSTEM] TCOM_DecClsidInstanceRefCount: address: %p, value: %d.\n", - &__TCOM_ClsidInstanceRefCount, __TCOM_ClsidInstanceRefCount); -#endif - if(__TCOM_ClsidInstanceRefCount <= 0) - { - return 0; - } - return __TCOM_ClsidInstanceRefCount; -} - -//DLLÈ«¾ÖʹÓãºÔö¼ÓClassFactory±»LockedµÄ´ÎÊý -Int32 TCOM_AddCalssFactoryLockedCount() -{ - __TCOM_CalssFactoryLockedCount++; -#ifdef __TCOM_OUTPUT_DEBUG_INFO__ - SS_printf("[TCOM_SYSTEM] TCOM_AddCalssFactoryLockedCount: address: %p, value: %d.\n", - &__TCOM_CalssFactoryLockedCount, __TCOM_CalssFactoryLockedCount); -#endif - if(__TCOM_CalssFactoryLockedCount <= 0) - { - return 0; - } - return __TCOM_CalssFactoryLockedCount; -} - -//DLLÈ«¾ÖʹÓ㺼õÉÙClassFactory±»LockedµÄ´ÎÊý -Int32 TCOM_DecCalssFactoryLockedCount() -{ - __TCOM_CalssFactoryLockedCount--; -#ifdef __TCOM_OUTPUT_DEBUG_INFO__ - SS_printf("[TCOM_SYSTEM] TCOM_DecCalssFactoryLockedCount: address: %p, value: %d.\n", - &__TCOM_CalssFactoryLockedCount, __TCOM_CalssFactoryLockedCount); -#endif - if(__TCOM_CalssFactoryLockedCount <= 0) - { - return 0; - } - return __TCOM_CalssFactoryLockedCount; -} - -//ʵÏÖTCOMËùÐèÒªµÄDLLº¯Êý - -//DLLÌṩµÄ»ñÈ¡Ö¸¶¨CLSIDµÄÖ¸¶¨½Ó¿Ú -SS_EXPORT HRESULT TDllGetClassObject(TREFCLSID rclsid, TREFIID riid, LPVOID * ppv) -{ - return TCOM_Srv_GetClassObject(rclsid, riid, ppv); -} - -//DLLÌṩµÄ²éѯDLLÄÜ·ñ±»Unload -SS_EXPORT HRESULT TDllCanUnloadNow(void) -{ -#ifdef __TCOM_OUTPUT_DEBUG_INFO__ - SS_printf("[TCOM_SYSTEM] TDllCanUnloadNow: address1: %p, address2: %p, value1: %d, value2: %d.\n", - &__TCOM_ClsidInstanceRefCount, &__TCOM_CalssFactoryLockedCount, __TCOM_ClsidInstanceRefCount, - __TCOM_CalssFactoryLockedCount); -#endif - if((__TCOM_ClsidInstanceRefCount <= 0) && (__TCOM_CalssFactoryLockedCount <= 0)) - return TCOM_S_TRUE; - return TCOM_S_FALSE; -} - -//DLLÌṩµÄ°ÑDLLµÄTCOMÐÅÏ¢¼ÓÈëµ½×¢²á±í -SS_EXPORT HRESULT TDllRegisterServer(void) -{ - return TCOM_Srv_RegisterServer(); -} - -//DLLÌṩµÄ°ÑDLLµÄTCOMÐÅÏ¢´Ó×¢²á±íÖÐɾ³ý -SS_EXPORT HRESULT TDllUnregisterServer(void) -{ - return TCOM_Srv_UnregisterServer(); -} - -#endif //__TCOM_SUPPORT__ - -#ifdef _WIN32 - -#ifndef SS_MAKEDLL - #error Error!!! SS_MAKEDLL Must defined! -#endif - -BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - //½ø³Ì¼ÓÔض¯Ì¬¿â½øÐеIJÙ×÷ -#ifdef __TCOM_SUPPORT__ - __TCOM_Init(); -#endif - break; - case DLL_THREAD_ATTACH: - //Ï̼߳ÓÔض¯Ì¬¿â½øÐеIJÙ×÷ - break; - case DLL_THREAD_DETACH: - //Ïß³ÌжÔض¯Ì¬¿â½øÐеIJÙ×÷ - break; - case DLL_PROCESS_DETACH: - //½ø³ÌжÔض¯Ì¬¿â½øÐеIJÙ×÷ -#ifdef __TCOM_SUPPORT__ - __TCOM_DeInit(); -#endif - break; - } - return TRUE; -} -#else //linux - -#ifndef SS_SHARED - #error Error!!! SS_SHARED Must defined! -#endif - -void __attribute((constructor)) TG3_Dll_Attach() -{ - //½ø³Ì¼ÓÔض¯Ì¬¿â½øÐеIJÙ×÷ -#ifdef __TCOM_SUPPORT__ - __TCOM_Init(); -#endif -} - -void __attribute((destructor)) TG3_Dll_Detach() -{ - //½ø³ÌжÔض¯Ì¬¿â½øÐеIJÙ×÷ -#ifdef __TCOM_SUPPORT__ - __TCOM_DeInit(); -#endif -} - -#endif - -//Èç¹û²»ÊÇ×÷ΪTG3µÄ¶¯Ì¬¿âÓ¦Óã¬ÇëÔÚVCÏîÄ¿ÖкÍTMK3ÎļþÖж¨Òå __TG3_PURE_DLL__ ºê -#ifndef __TG3_PURE_DLL__ - -//¶¯Ì¬¿âÓ¦ÓÃʹÓõÄͳһµ¼³öÃû×ÖµÄÈë¿Úº¯Êý -SS_EXPORT Int32 TDllTG3AppMain(const TUChar * pAppID, UInt32 nCmd, void * pCmdParam) -{ - Int32 retValue; - - //³õʼ»¯TCOM - TCoInitialize(NULL); - - retValue = TG3AppMain(pAppID, nCmd, pCmdParam); - - //ÊÍ·ÅTCOM - TCoUninitialize(); - - return retValue; -} - -#endif - - diff --git a/TestAudioEngine.uphone/TG3AppDllEntry.h b/TestAudioEngine.uphone/TG3AppDllEntry.h deleted file mode 100644 index e91464ed88..0000000000 --- a/TestAudioEngine.uphone/TG3AppDllEntry.h +++ /dev/null @@ -1,53 +0,0 @@ - -#ifndef __TG3_APP_DLL_ENTRY_H__ -#define __TG3_APP_DLL_ENTRY_H__ - -#ifndef __cplusplus - #error This file need C++ support -#endif - -#if TG3_APP_ENTRY_MINIMUM_VERSION > 200 -#error Please replace TG3AppDllEntry.h and TG3AppDllEntry.cpp to newest version! -#endif - -#ifdef __TCOM_SUPPORT__ - -#include "TCOM.h" - -//Ìṩ¸øDLLʵÏÖÕßµ÷Óõĺ¯Êý£¬ÓÃÓÚÔÚÈ«¾Ö¼Ç¼ʵÀýºÍClassFactory±»ÒýÓõĴÎÊý£¬ -//ÕâÁ½¸ö¼ÆÊýÓ°ÏìDLLÊÇ·ñ¿ÉÄܱ»´ÓÄÚ´æÖÐжÔØ£¬Çë´ó¼ÒÔÚʵÀýÖÐÄÚ²¿ÊµÏÖ¼ÆÊýµÄͬʱ¸üÐÂÈ«¾Ö¼ÆÊý£¬ -//·ñÔòDLLºÜÓпÉÄÜ»áÔÚʵÀý»¹´æÔÚµÄʱºò±»ÏµÍ³×Ô¶¯Ç¿ÖÆжÔØ - -//DLLÈ«¾ÖʹÓãºÔö¼Ó¶ÔÏóʵÀý±»ÒýÓôÎÊý -Int32 TCOM_AddClsidInstanceRefCount(); - -//DLLÈ«¾ÖʹÓ㺼õÉÙ¶ÔÏóʵÀý±»ÒýÓôÎÊý -Int32 TCOM_DecClsidInstanceRefCount(); - -//DLLÈ«¾ÖʹÓãºÔö¼ÓClassFactory±»LockedµÄ´ÎÊý -Int32 TCOM_AddCalssFactoryLockedCount(); - -//DLLÈ«¾ÖʹÓ㺼õÉÙClassFactory±»LockedµÄ´ÎÊý -Int32 TCOM_DecCalssFactoryLockedCount(); - - -//Ó¦ÓÃDLLÔÚÖ§³ÖTCOMµÄʱºòÌṩ¸øµ¼³öº¯ÊýʹÓõĺ¯Êý - -//Ó¦Óøù¾Ý¸ø³öµÄCLSIDºÍClassFactory½Ó¿ÚIID·µ»ØClassFactoryµÄ½Ó¿Ú -//·µ»ØÖµ£º²Î¿¼TCOM_S_ϵÁк궨Òå -HRESULT TCOM_Srv_GetClassObject(TREFCLSID rclsid, TREFIID riid, LPVOID * ppv); - -//Ó¦ÓÃÌṩµÄ°ÑTCOMÐÅÏ¢¼ÓÈëµ½×¢²á±í -//·µ»ØÖµ£º²Î¿¼TCOM_S_ϵÁк궨Òå -HRESULT TCOM_Srv_RegisterServer(void); - -//Ó¦ÓÃÌṩµÄ°ÑTCOMÐÅÏ¢´Ó×¢²á±íÖÐɾ³ý -//·µ»ØÖµ£º²Î¿¼TCOM_S_ϵÁк궨Òå -HRESULT TCOM_Srv_UnregisterServer(void); - -#endif //__TCOM_SUPPORT__ - -#endif //__TG3_APP_DLL_ENTRY_H__ - - - diff --git a/TestAudioEngine.uphone/TestAudioEngine.vcproj b/TestAudioEngine.uphone/TestAudioEngine.vcproj deleted file mode 100644 index 8de39caf88..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngine.vcproj +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TestAudioEngine.uphone/TestAudioEngine.vcproj.user b/TestAudioEngine.uphone/TestAudioEngine.vcproj.user deleted file mode 100644 index 259bedcf0b..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngine.vcproj.user +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - diff --git a/TestAudioEngine.uphone/TestAudioEngineApp.cpp b/TestAudioEngine.uphone/TestAudioEngineApp.cpp deleted file mode 100644 index ab480033a3..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngineApp.cpp +++ /dev/null @@ -1,53 +0,0 @@ -// Application application cpp file. - -// Original file name: TestAudioEngineApp.cpp -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - -#include "TestAudioEngineApp.h" -#include "TestAudioEngineMainForm.h" -TTestAudioEngineApp::TTestAudioEngineApp() -{ - -} - -TTestAudioEngineApp::~TTestAudioEngineApp() -{ - -} - -Boolean TTestAudioEngineApp::EventHandler(EventType* pEvent) -{ - Boolean bHandled = FALSE; - - switch(pEvent->eType) - { - case EVENT_AppLoad: - { - TMainForm *pWin = new TMainForm(this); - if (pWin) - { - SetActiveWindow(pWin); - } - else - { // ´°¿Ú´´½¨Ê§°Ü£¬Í˳öÓ¦Óᣠ- SendStopEvent(); - } - } - bHandled = TRUE; - break; - - case EVENT_AppStopNotify: - { - - } - bHandled = FALSE; - break; - } - if (FALSE == bHandled) - { - return TApplication::EventHandler(pEvent); - } - - return bHandled; -} diff --git a/TestAudioEngine.uphone/TestAudioEngineApp.h b/TestAudioEngine.uphone/TestAudioEngineApp.h deleted file mode 100644 index 9441f45f09..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngineApp.h +++ /dev/null @@ -1,24 +0,0 @@ -// Application application header file. - -// Original file name: TestAudioEngineApp.h -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - -#ifndef __TestAudioEngine_App_H__ -#define __TestAudioEngine_App_H__ -#include "TG3.h" - -class TTestAudioEngineApp : public TApplication -{ -public: - TTestAudioEngineApp(); - ~TTestAudioEngineApp(); -public: - virtual Boolean EventHandler(EventType * pEvent); -protected: -private: -}; - - -#endif - diff --git a/TestAudioEngine.uphone/TestAudioEngineEntry.cpp b/TestAudioEngine.uphone/TestAudioEngineEntry.cpp deleted file mode 100644 index 7eebf233cc..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngineEntry.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// Application main file. - -// Original file name: TestAudioEngineEntry.cpp -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - - -#include "TestAudioEngineEntry.h" -#include "TestAudioEngineApp.h" -#include "testaudioengine_res_c.h" - -const ResourceRegisterEntry ResRegList_TestAudioEngine[] = -{ - TG_RESOURCE_DEFINE -}; - -const AppResourceEntry TestAudioEngineResourceEntry = -{ - (ResourceRegisterEntry*)ResRegList_TestAudioEngine, // res list in this app - sizeof(ResRegList_TestAudioEngine) / sizeof(ResourceRegisterEntry), //number of item in res -}; - -Int32 TG3AppMain(const TUChar * pAppID, UInt32 nCmd, void * pCmdParam) -{ - switch(nCmd) - { - case 0: // Ö÷Èë¿Ú - { - // UIÓ¦ÓóÌÐòÀý×Ó£º - TTestAudioEngineApp * pApp= new TTestAudioEngineApp(); - pApp->WM_SetResourceEntry(&TestAudioEngineResourceEntry); - pApp->Run(); - - delete pApp; - break; - } - } - return 1; -} - - diff --git a/TestAudioEngine.uphone/TestAudioEngineEntry.h b/TestAudioEngine.uphone/TestAudioEngineEntry.h deleted file mode 100644 index 233bb3a643..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngineEntry.h +++ /dev/null @@ -1,13 +0,0 @@ -// Application main header file. - -// Original file name: TestAudioEngineEntry.h -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - - -#ifndef __TestAudioEngine_Main_H__ -#define __TestAudioEngine_Main_H__ -#include "TG3.h" - -#endif - diff --git a/TestAudioEngine.uphone/TestAudioEngineMainForm.cpp b/TestAudioEngine.uphone/TestAudioEngineMainForm.cpp deleted file mode 100644 index 371b3d46b9..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngineMainForm.cpp +++ /dev/null @@ -1,152 +0,0 @@ -// Application main form file. - -// Original file name: TestAudioEngineMainForm.cpp -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - - -#include "TestAudioEngineMainForm.h" -#include "testaudioengine_res_def.h" -#include "TestAudioEngineUnicodeScript_str.h" -#include "SimpleAudioEngine.h" -#include - -using namespace CocosDenshion; - -TMainForm::TMainForm(TApplication * pApp):TWindow(pApp) -, m_nEffect2ID(0) -{ - Create(TESTAU_ID_Form1002); -} - -TMainForm::~TMainForm() -{ - SimpleAudioEngine::sharedEngine()->end(); -} - -Boolean TMainForm::EventHandler(TApplication * pApp, EventType * pEvent) -{ - Boolean bHandled = FALSE; - - switch(pEvent->eType) - { - case EVENT_WinInit: - { - SimpleAudioEngine::sharedEngine()->setBackgroundMusicVolume(30); - SimpleAudioEngine::sharedEngine()->setEffectsVolume(30); - bHandled = TRUE; - } - break; - case EVENT_WinPaint: - { - DrawWindow(); - bHandled = TRUE; - } - break; - case EVENT_CtrlSelect: - { - //switch(pEvent->sParam1) - //{ - //case RES_SYSTEM_WINDOW_TITLE_BUTTON_ID: - // bHandled = TRUE; - // break; - //} - bHandled = CtrlSelected(pApp, pEvent); - } - break; - case EVENT_WinClose: - { - // Stop the application since the main form has been closed - pApp->SendStopEvent(); - } - break; - } - - if (FALSE == bHandled) - { - return TWindow::EventHandler(pApp,pEvent); - } - return bHandled; -} - -Boolean TMainForm::CtrlSelected(TApplication * pApp, EventType * pEvent) -{ - Boolean bHandled = FALSE; - SimpleAudioEngine* pAudioEngine = SimpleAudioEngine::sharedEngine(); - - switch (pEvent->sParam1) - { - case TESTAU_ID_Form1002_PlayBack: - // play background music - pAudioEngine->playBackgroundMusic("background.mp3", true); - bHandled = TRUE; - break; - - case TESTAU_ID_Form1002_PauseBack: - // pause background music - pAudioEngine->pauseBackgroundMusic(); - bHandled = TRUE; - break; - - case TESTAU_ID_Form1002_StopBack: - // stop background music - pAudioEngine->stopBackgroundMusic(); - bHandled = TRUE; - break; - - case TESTAU_ID_Form1002_BackVolumeUp: - { - int nCurVolume = pAudioEngine->getBackgroundMusicVolume(); - pAudioEngine->setBackgroundMusicVolume(nCurVolume + 5); - bHandled = TRUE; - } - break; - - case TESTAU_ID_Form1002_BackVolumeDown: - { - int nCurVolume = pAudioEngine->getBackgroundMusicVolume(); - pAudioEngine->setBackgroundMusicVolume(nCurVolume - 5); - bHandled = TRUE; - } - break; - - case TESTAU_ID_Form1002_LoadEffect: - // load effect1 - pAudioEngine->preloadEffect("Effect1.wav"); - bHandled = TRUE; - break; - - case TESTAU_ID_Form1002_UnLoadBtn: - // unload effect1 - pAudioEngine->unloadEffect("Effect1.wav"); - bHandled = TRUE; - break; - - case TESTAU_ID_Form1002_PlayEffect: - // play effect2 - m_nEffect2ID = pAudioEngine->playEffect("Effect2.wav"); -/* assert(m_nEffect2ID >= 0);*/ - bHandled = TRUE; - break; - - case TESTAU_ID_Form1002_EffectVolumeUp: - { - int nCurVolume = pAudioEngine->getEffectsVolume(); - pAudioEngine->setEffectsVolume(nCurVolume + 5); - bHandled = TRUE; - } - break; - - case TESTAU_ID_Form1002_EffectVolumeDown: - { - int nCurVolume = pAudioEngine->getEffectsVolume(); - pAudioEngine->setEffectsVolume(nCurVolume - 5); - bHandled = TRUE; - } - break; - default: - break; - } - - return bHandled; -} diff --git a/TestAudioEngine.uphone/TestAudioEngineMainForm.h b/TestAudioEngine.uphone/TestAudioEngineMainForm.h deleted file mode 100644 index 1e9045fa25..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngineMainForm.h +++ /dev/null @@ -1,29 +0,0 @@ -// Application main form file. - -// Original file name: TestAudioEngineMainForm.h -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - - -#ifndef __TestAudioEngine_MainForm_H__ -#define __TestAudioEngine_MainForm_H__ -#include "TG3.h" - -class TMainForm : public TWindow -{ -public: - - TMainForm(TApplication * pApp); - - ~TMainForm(void); - -public: - virtual Boolean EventHandler(TApplication * pApp, EventType * pEvent); - Boolean CtrlSelected(TApplication * pApp, EventType * pEvent); -protected: - int m_nEffect2ID; -}; - - -#endif - diff --git a/TestAudioEngine.uphone/TestAudioEngineUnicodeScript.h b/TestAudioEngine.uphone/TestAudioEngineUnicodeScript.h deleted file mode 100644 index bcac0a2af0..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngineUnicodeScript.h +++ /dev/null @@ -1,12 +0,0 @@ -// Unicode string resource scrip file,DOT NOT include it. - -// Original file name: TestAudioEngineUnicodeScript.h -// Generated by TOPS Builder:Project wizard,Date:2010-9-29 - - - -#define TZD_CONV(x, y) -TZD_CONV(AppName_TestAudioEngine, "TestAudioEngine") -TZD_CONV(UnloadedTip, "ÒôƵÎļþÉÐδÔØÈë!") -TZD_CONV(FailedTitle, "ʧ°Ü") - diff --git a/TestAudioEngine.uphone/TestAudioEngine_Arm.TMK3 b/TestAudioEngine.uphone/TestAudioEngine_Arm.TMK3 deleted file mode 100644 index 522643bdaa..0000000000 --- a/TestAudioEngine.uphone/TestAudioEngine_Arm.TMK3 +++ /dev/null @@ -1,53 +0,0 @@ -; -; TG3 Makefile Auto Create Script -; -; ˵Ã÷£º -; 1.ÔڵȺÅ×ó±ß²»ÒªÓпոñ -; 2.ËùÓеÄ·¾¶ÇëʹÓÃ"/"À´·Ö¸ô -; 3.ËùÓеÄÎļþÃû²»¿ÉÒÔÓпոñ -; 4.Ö»ÄܶԵ±Ç°Ä¿Â¼¼°Æä×ÓĿ¼ÏµÄ.c¡¢.cppÉú³ÉMakefile -; - -;±¾TMK3ÎļþĿ¼λÖõ½ÏîÄ¿¸ùĿ¼֮¼äµÄת»»£¬²»Ö§³Ö¶à¸ö´®£¬Èç¹ûÓжà¸ö£¬ÒÔ×îºóÒ»¸öΪ׼ -;¼´ ./$(TO_PROJECT_ROOT)/ ¾ÍÊÇÏîÄ¿µÄ¸ùĿ¼ -TO_PROJECT_ROOT=../../PRJ_TG3 - -;Êä³öÄ¿±êµÄÃû×Ö£¬²»Ö§³Ö¶à¸ö´®£¬Èç¹ûÓжà¸ö£¬ÒÔ×îºóÒ»¸öΪ׼ -OUTPUT_FILENAME=libTestAudioEngine.so - -;°üº¬µÄÆäËûµÄTMK3Îļþ£¬´ËÎļþºÍ±¾ÎļþÒ»Æð¹¹³ÉMakeFileµÄÄÚÈÝ -;´ËÏî¿ÉÒÔ³öÏÖÔÚTMK3ÎļþÄÚµÄÈÎÒâµØ·½£¬ÓëÒѾ­´æÔÚµÄÏîÒÀ´Î×éºÏ -;×¢Ò⣺´ËÏî²»Ö§³Ö¾ø¶Ô·¾¶£¬µ«ÊÇ¿ÉÒÔʹÓÃ$(TO_PROJECT_ROOT)¹¹³ÉÎļþÃû -INCLUDE_TMK3=$(TO_PROJECT_ROOT)/MakeInclude/TG3_APP_Arm.TMK3 ;TOPS±ê×¼Ó¦Ó㬰üÀ¨¶¯Ì¬¿âµÈ - -;Ô¤¶¨Òå´®£¬Éú³ÉMakeFileµÄʱºòÖ±½Ó·ÅÔÚMakeFileµÄÇ°Ãæ -;¸ñʽ£ºPRE_DEFINE=STRING£¬Éú³ÉMakeFileµÄʱºò£¬"PRE_DEFINE="ºóÃæµÄËùÓзÇ×¢ÊÍ·ÇÐøÐÐ×Ö·û¶¼»á·ÅÔÚMakeFileÇ°Ãæ -;ÀýÈ磺PRE_DEFINE=AAA=BBB£¬»á·ÅÈëAAA=BBBµ½MakeFileÖÐ -;¿ÉÒÔʹÓöà¸öPRE_DEFINE´®£¬Ò²¿ÉÒÔʹÓÃPRE_DEFINE1¡¢PRE_DEFINE2µÈ·½Ê½£¬MakeFileÖÐÒÀ¾Ý³öÏÖ˳Ðò(²»ÊÇÊý×Ö´óС)ÅÅÁÐ -;PRE_DEFINE=USE_IMAGEKIT=1 ;ʹÓà ImageToolKit ¿â£¬´ËʱÉú³ÉµÄ Makefile »á×Ô¶¯Á¬½ÓÓйصÄLIB -;PRE_DEFINE=USE_ICU=1 ;ʹÓà ICU ¿â£¬´ËʱÉú³ÉµÄ Makefile »á×Ô¶¯Á¬½ÓÓйصÄLIB -;PRE_DEFINE=USE_MTAPI=1 ;ʹÓà MTAPI ¿â£¬´ËʱÉú³ÉµÄ Makefile »á×Ô¶¯Á¬½ÓÓйصÄLIB - -;C¡¢C++Ô¤¶¨Òåºê£¬¿ÉÒÔʹÓöà¸öDEFINES´®£¬Ò²¿ÉÒÔʹÓÃDEFINES1¡¢DEFINES2µÈ·½Ê½£¬MakeFileÖÐÒÀ¾Ý³öÏÖ˳Ðò(²»ÊÇÊý×Ö´óС)ÅÅÁÐ -DEFINES=-DUNDER_UPHONE ;ÕâÀïÌîÈëÓ¦ÓõÄ×Ô¶¨Òåºê¡£×¢Ò⣺ITOPS×Ô¼ºµÄËùÐ趨Òå»á×Ô¶¯°üº¬£¬¹Ê´ËÕâÀï½ö½ö°üº¬Ó¦ÓÃ×Ô¼ºÌØÓеĶ¨Òå¼´¿É -;DEFINES=-D__TG3_PURE_DLL__ ;Éú³ÉµÄÊÇ´¿¶¯Ì¬¿â£¨Òâ˼ÊÇ£º²»ÊÇTOPSÓ¦Ó㬵«¿ÉÒÔÊÇTCOM×é¼þ£© -;DEFINES=-D__TCOM_SUPPORT__ ;Éú³ÉµÄÊÇTCOM×é¼þ£¨×¢Ò⣺TOPSÓ¦ÓÃÒ²¿ÉÒÔͬʱÊÇTCOM×é¼þ£© - -;°üº¬Â·¾¶£¬¿ÉÒÔʹÓöà¸öINCLUDE_PATH´®£¬Ò²¿ÉÒÔʹÓÃINCLUDE_PATH1¡¢INCLUDE_PATH2µÈ·½Ê½£¬MakeFileÖÐÒÀ¾Ý³öÏÖ˳Ðò(²»ÊÇÊý×Ö´óС)ÅÅÁÐ -INCLUDE_PATH=-I../CocosDenshion/include ;Ó¦ÓöîÍâµÄ°üº¬Â·¾¶¡£×¢Ò⣺ITOPS×Ô¼ºµÄËùÓз¾¶¶¼»á×Ô¶¯°üº¬£¬¹Ê´ËÕâÀï½ö½ö°üº¬Ó¦ÓÃ×Ô¼ºÌØÓеÄ·¾¶¼´¿É - -;Á¬½ÓµÄ¿âÎļþ£¬¿ÉÒÔʹÓöà¸öLIBS´®£¬Ò²¿ÉÒÔʹÓÃLIBS1¡¢LIBS2µÈ·½Ê½£¬MakeFileÖÐÒÀ¾Ý³öÏÖ˳Ðò(²»ÊÇÊý×Ö´óС)ÅÅÁÐ -LIBS=-lCocosDenshionStatic -lTSoundPlayer -lz ;Ó¦ÓöîÍâµÄÁ¬½Ó¿â¡£×¢Ò⣺ITOPS×Ô¼ºµÄËùÐè¿â×Ô¶¯°üº¬£¬¶øÇÒ¿â°üº¬Â·¾¶Ò²ÒѾ­°üº¬£¬¹Ê´ËÕâÀï½ö½ö°üº¬Ó¦ÓÃ×Ô¼ºÌØÓеĿâµÄÃû×Ö¼´¿É - -;Ç¿ÖÆ°üº¬ÎļþµÄÃû×Ö£¬²»ÄÜʹÓÃͨÅä·û£¬Ò»¶¨ÒªÊ¹ÓÃÏà¶Ô»òÕß¾ø¶Ô·¾¶ -;¼«Á¦ÒªÇóʹÓÃÏà¶Ô·¾¶£¬¶à¸öÎļþÖ®¼äʹÓá°|¡±·Ö¸ô -;Ç¿ÖÆ°üº¬ÎļþÖ¸µÄÊDz»ÔÚ±¾Îļþ¼Ð¼°Æä×ÓÎļþ¼ÐϵÄ.c¡¢.cpp¡¢.oÎļþ -;¿ÉÒÔʹÓöà¸öINCLUDEFILE´®£¬Ò²¿ÉÒÔʹÓÃINCLUDEFILE1¡¢INCLUDEFILE2µÈ·½Ê½£¬MakeFileÖÐÒÀ¾Ý³öÏÖ˳Ðò(²»ÊÇÊý×Ö´óС)ÅÅÁÐ -INCLUDEFILE= - -;Ç¿ÖÆÅųýÎļþ£¬²»ÄÜʹÓÃͨÅä·û£¬Ò»¶¨ÒªÊ¹ÓÃÏà¶Ô·¾¶ -;¶à¸öÎļþÖ®¼äʹÓá°|¡±·Ö¸ô£¬Â·¾¶±ØÐëÒÔ"./"£¬"../"¿ªÊ¼ -;Ö»ÄܶÔ.c¡¢.cppÎļþ½øÐÐÅųý -;Èç¹ûÒªÅųý±¾Ä¿Â¼µÄÎļþÒ²Òª¼ÓÈë"./" -;¿ÉÒÔʹÓöà¸öEXCLUDEFILE´®£¬Ò²¿ÉÒÔʹÓÃEXCLUDEFILE1¡¢EXCLUDEFILE2µÈ·½Ê½£¬MakeFileÖÐÒÀ¾Ý³öÏÖ˳Ðò(²»ÊÇÊý×Ö´óС)ÅÅÁÐ -EXCLUDEFILE= diff --git a/TestAudioEngine.win32/TestAudioEngine.win32.cpp b/TestAudioEngine.win32/TestAudioEngine.win32.cpp deleted file mode 100644 index eb6dcb7f12..0000000000 --- a/TestAudioEngine.win32/TestAudioEngine.win32.cpp +++ /dev/null @@ -1,67 +0,0 @@ - -// TestAudioEngine-win32.cpp : Defines the class behaviors for the application. -// - -#include "stdafx.h" -#include "TestAudioEngine.win32.h" -#include "TestAudioEngine.win32Dlg.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#endif - - -// CTestAudioEnginewin32App - -BEGIN_MESSAGE_MAP(CTestAudioEnginewin32App, CWinAppEx) - ON_COMMAND(ID_HELP, &CWinApp::OnHelp) -END_MESSAGE_MAP() - - -// CTestAudioEnginewin32App construction - -CTestAudioEnginewin32App::CTestAudioEnginewin32App() -{ - // TODO: add construction code here, - // Place all significant initialization in InitInstance -} - - -// The one and only CTestAudioEnginewin32App object - -CTestAudioEnginewin32App theApp; - - -// CTestAudioEnginewin32App initialization - -BOOL CTestAudioEnginewin32App::InitInstance() -{ - CWinAppEx::InitInstance(); - - // Standard initialization - // If you are not using these features and wish to reduce the size - // of your final executable, you should remove from the following - // the specific initialization routines you do not need - // Change the registry key under which our settings are stored - // TODO: You should modify this string to be something appropriate - // such as the name of your company or organization - SetRegistryKey(_T("Local AppWizard-Generated Applications")); - - CTestAudioEnginewin32Dlg dlg; - m_pMainWnd = &dlg; - INT_PTR nResponse = dlg.DoModal(); - if (nResponse == IDOK) - { - // TODO: Place code here to handle when the dialog is - // dismissed with OK - } - else if (nResponse == IDCANCEL) - { - // TODO: Place code here to handle when the dialog is - // dismissed with Cancel - } - - // Since the dialog has been closed, return FALSE so that we exit the - // application, rather than start the application's message pump. - return FALSE; -} diff --git a/TestAudioEngine.win32/TestAudioEngine.win32.h b/TestAudioEngine.win32/TestAudioEngine.win32.h deleted file mode 100644 index 8a1b66014d..0000000000 --- a/TestAudioEngine.win32/TestAudioEngine.win32.h +++ /dev/null @@ -1,32 +0,0 @@ - -// TestAudioEngine-win32.h : main header file for the PROJECT_NAME application -// - -#pragma once - -#ifndef __AFXWIN_H__ - #error "include 'stdafx.h' before including this file for PCH" -#endif - -#include "resource.h" // main symbols - - -// CTestAudioEnginewin32App: -// See TestAudioEngine-win32.cpp for the implementation of this class -// - -class CTestAudioEnginewin32App : public CWinAppEx -{ -public: - CTestAudioEnginewin32App(); - -// Overrides - public: - virtual BOOL InitInstance(); - -// Implementation - - DECLARE_MESSAGE_MAP() -}; - -extern CTestAudioEnginewin32App theApp; \ No newline at end of file diff --git a/TestAudioEngine.win32/TestAudioEngine.win32.rc b/TestAudioEngine.win32/TestAudioEngine.win32.rc deleted file mode 100644 index c0ece1a7d7..0000000000 --- a/TestAudioEngine.win32/TestAudioEngine.win32.rc +++ /dev/null @@ -1,188 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#ifndef APSTUDIO_INVOKED -#include "targetver.h" -#endif -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Chinese (P.R.C.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) -#ifdef _WIN32 -LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED -#pragma code_page(936) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#ifndef APSTUDIO_INVOKED\r\n" - "#include ""targetver.h""\r\n" - "#endif\r\n" - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" - "LANGUAGE 9, 1\r\n" - "#pragma code_page(1252)\r\n" - "#include ""res\\TestAudioEnginewin32.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#include ""afxres.rc"" // Standard components\r\n" - "#endif\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDR_MAINFRAME ICON "res\\TestAudioEngine-win32.ico" -#endif // Chinese (P.R.C.) resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_TESTAUDIOENGINEWIN32_DIALOG DIALOGEX 0, 0, 320, 200 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_APPWINDOW -CAPTION "TestAudioEngine-win32" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,209,179,50,14 - PUSHBUTTON "Cancel",IDCANCEL,263,179,50,14 - PUSHBUTTON "music",IDC_MUSIC,24,22,50,14 - PUSHBUTTON "effect 1",IDC_EFFECT1,24,49,50,14 - PUSHBUTTON "effect 2",IDC_EFFECT2,89,49,50,14 - PUSHBUTTON "stop music",IDC_MUSIC_STOP,88,23,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "TODO: " - VALUE "FileDescription", "TODO: " - VALUE "FileVersion", "1.0.0.1" - VALUE "InternalName", "TestAudioEngine-win32.exe" - VALUE "LegalCopyright", "TODO: (c) . All rights reserved." - VALUE "OriginalFilename", "TestAudioEngine-win32.exe" - VALUE "ProductName", "TODO: " - VALUE "ProductVersion", "1.0.0.1" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_TESTAUDIOENGINEWIN32_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 313 - TOPMARGIN, 7 - BOTTOMMARGIN, 193 - END -END -#endif // APSTUDIO_INVOKED - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE 9, 1 -#pragma code_page(1252) -#include "res\TestAudioEnginewin32.rc2" // non-Microsoft Visual C++ edited resources -#include "afxres.rc" // Standard components -#endif - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/TestAudioEngine.win32/TestAudioEngine.win32.vcproj b/TestAudioEngine.win32/TestAudioEngine.win32.vcproj deleted file mode 100644 index 442958595c..0000000000 --- a/TestAudioEngine.win32/TestAudioEngine.win32.vcproj +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/TestAudioEngine.win32/TestAudioEngine.win32Dlg.cpp b/TestAudioEngine.win32/TestAudioEngine.win32Dlg.cpp deleted file mode 100644 index f2bd88799e..0000000000 --- a/TestAudioEngine.win32/TestAudioEngine.win32Dlg.cpp +++ /dev/null @@ -1,132 +0,0 @@ - -// TestAudioEngine-win32Dlg.cpp : implementation file -// - -#include "stdafx.h" -#include "TestAudioEngine.win32.h" -#include "TestAudioEngine.win32Dlg.h" - -#include "SimpleAudioEngine.h" - -using namespace CocosDenshion; - -const static char kszMusic[] = "music.mid"; -const static char kszEffect1[] = "effect1.wav"; -const static char kszEffect2[] = "effect2.wav"; - -static int s_nEffect1; -static int s_nEffect2; - -#ifdef _DEBUG -#define new DEBUG_NEW -#endif - - -// CTestAudioEnginewin32Dlg dialog - - - - -CTestAudioEnginewin32Dlg::CTestAudioEnginewin32Dlg(CWnd* pParent /*=NULL*/) - : CDialog(CTestAudioEnginewin32Dlg::IDD, pParent) -{ - m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); -} - -void CTestAudioEnginewin32Dlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); -} - -BEGIN_MESSAGE_MAP(CTestAudioEnginewin32Dlg, CDialog) - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - //}}AFX_MSG_MAP - ON_BN_CLICKED(IDC_MUSIC, &CTestAudioEnginewin32Dlg::OnBnClickedMusic) - ON_BN_CLICKED(IDC_MUSIC_STOP, &CTestAudioEnginewin32Dlg::OnBnClickedMusicStop) - ON_BN_CLICKED(IDC_EFFECT1, &CTestAudioEnginewin32Dlg::OnBnClickedEffect1) - ON_BN_CLICKED(IDC_EFFECT2, &CTestAudioEnginewin32Dlg::OnBnClickedEffect2) -// ON_WM_CLOSE() - ON_WM_DESTROY() -END_MESSAGE_MAP() - - -// CTestAudioEnginewin32Dlg message handlers - -BOOL CTestAudioEnginewin32Dlg::OnInitDialog() -{ - CDialog::OnInitDialog(); - - // Set the icon for this dialog. The framework does this automatically - // when the application's main window is not a dialog - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon - - // TODO: Add extra initialization here - - return TRUE; // return TRUE unless you set the focus to a control -} - -// If you add a minimize button to your dialog, you will need the code below -// to draw the icon. For MFC applications using the document/view model, -// this is automatically done for you by the framework. - -void CTestAudioEnginewin32Dlg::OnPaint() -{ - if (IsIconic()) - { - CPaintDC dc(this); // device context for painting - - SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); - - // Center icon in client rectangle - int cxIcon = GetSystemMetrics(SM_CXICON); - int cyIcon = GetSystemMetrics(SM_CYICON); - CRect rect; - GetClientRect(&rect); - int x = (rect.Width() - cxIcon + 1) / 2; - int y = (rect.Height() - cyIcon + 1) / 2; - - // Draw the icon - dc.DrawIcon(x, y, m_hIcon); - } - else - { - CDialog::OnPaint(); - } -} - -// The system calls this function to obtain the cursor to display while the user drags -// the minimized window. -HCURSOR CTestAudioEnginewin32Dlg::OnQueryDragIcon() -{ - return static_cast(m_hIcon); -} - -void CTestAudioEnginewin32Dlg::OnBnClickedMusic() -{ - SimpleAudioEngine::sharedEngine()->playBackgroundMusic(kszMusic, true); -} - -void CTestAudioEnginewin32Dlg::OnBnClickedMusicStop() -{ - SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(); -} - -void CTestAudioEnginewin32Dlg::OnBnClickedEffect1() -{ - s_nEffect1 = SimpleAudioEngine::sharedEngine()->playEffect(kszEffect1); -} - -void CTestAudioEnginewin32Dlg::OnBnClickedEffect2() -{ - s_nEffect2 = SimpleAudioEngine::sharedEngine()->playEffect(kszEffect2); -} - -void CTestAudioEnginewin32Dlg::OnDestroy() -{ - CDialog::OnDestroy(); - - SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true); - SimpleAudioEngine::sharedEngine()->unloadEffectAll(); -} diff --git a/TestAudioEngine.win32/TestAudioEngine.win32Dlg.h b/TestAudioEngine.win32/TestAudioEngine.win32Dlg.h deleted file mode 100644 index a9a69af0cf..0000000000 --- a/TestAudioEngine.win32/TestAudioEngine.win32Dlg.h +++ /dev/null @@ -1,38 +0,0 @@ - -// TestAudioEngine-win32Dlg.h : header file -// - -#pragma once - - -// CTestAudioEnginewin32Dlg dialog -class CTestAudioEnginewin32Dlg : public CDialog -{ -// Construction -public: - CTestAudioEnginewin32Dlg(CWnd* pParent = NULL); // standard constructor - -// Dialog Data - enum { IDD = IDD_TESTAUDIOENGINEWIN32_DIALOG }; - - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - - -// Implementation -protected: - HICON m_hIcon; - - // Generated message map functions - virtual BOOL OnInitDialog(); - afx_msg void OnPaint(); - afx_msg HCURSOR OnQueryDragIcon(); - DECLARE_MESSAGE_MAP() -public: - afx_msg void OnBnClickedMusic(); - afx_msg void OnBnClickedMusicStop(); - afx_msg void OnBnClickedEffect1(); - afx_msg void OnBnClickedEffect2(); -// afx_msg void OnClose(); - afx_msg void OnDestroy(); -}; diff --git a/TestAudioEngine.win32/res/TestAudioEngine-win32.ico b/TestAudioEngine.win32/res/TestAudioEngine-win32.ico deleted file mode 100644 index d56fbcdfdf6eac0f4727c34770c26689271d96af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67777 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 NK9A-8OQnhX{{?OVn?wKr diff --git a/TestAudioEngine.win32/res/TestAudioEnginewin32.rc2 b/TestAudioEngine.win32/res/TestAudioEnginewin32.rc2 deleted file mode 100644 index dbf334041f..0000000000 --- a/TestAudioEngine.win32/res/TestAudioEnginewin32.rc2 +++ /dev/null @@ -1,13 +0,0 @@ -// -// TestAudioEnginewin32.RC2 - resources Microsoft Visual C++ does not edit directly -// - -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// Add manually edited resources here... - -///////////////////////////////////////////////////////////////////////////// diff --git a/TestAudioEngine.win32/resource.h b/TestAudioEngine.win32/resource.h deleted file mode 100644 index 1763c613c1..0000000000 --- a/TestAudioEngine.win32/resource.h +++ /dev/null @@ -1,22 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by TestAudioEngine-win32.rc -// -#define IDD_TESTAUDIOENGINEWIN32_DIALOG 102 -#define IDR_MAINFRAME 128 -#define IDC_MUSIC 1000 -#define IDC_EFFECT1 1001 -#define IDC_EFFECT2 1002 -#define IDC_BUTTON4 1003 -#define IDC_MUSIC_STOP 1003 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 129 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1004 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/TestAudioEngine.win32/stdafx.cpp b/TestAudioEngine.win32/stdafx.cpp deleted file mode 100644 index 20b4136b89..0000000000 --- a/TestAudioEngine.win32/stdafx.cpp +++ /dev/null @@ -1,8 +0,0 @@ - -// stdafx.cpp : source file that includes just the standard includes -// TestAudioEngine-win32.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "stdafx.h" - - diff --git a/TestAudioEngine.win32/stdafx.h b/TestAudioEngine.win32/stdafx.h deleted file mode 100644 index 2c8fd02d47..0000000000 --- a/TestAudioEngine.win32/stdafx.h +++ /dev/null @@ -1,48 +0,0 @@ - -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, -// but are changed infrequently - -#pragma once - -#ifndef _SECURE_ATL -#define _SECURE_ATL 1 -#endif - -#ifndef VC_EXTRALEAN -#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers -#endif - -#include "targetver.h" - -#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit - -// turns off MFC's hiding of some common and often safely ignored warning messages -#define _AFX_ALL_WARNINGS - -#include // MFC core and standard components -#include // MFC extensions - - - - - -#ifndef _AFX_NO_OLE_SUPPORT -#include // MFC support for Internet Explorer 4 Common Controls -#endif -#ifndef _AFX_NO_AFXCMN_SUPPORT -#include // MFC support for Windows Common Controls -#endif // _AFX_NO_AFXCMN_SUPPORT - -#include // MFC support for ribbons and control bars - - - - - - - - - - - diff --git a/TestAudioEngine.win32/targetver.h b/TestAudioEngine.win32/targetver.h deleted file mode 100644 index 27867ba249..0000000000 --- a/TestAudioEngine.win32/targetver.h +++ /dev/null @@ -1,26 +0,0 @@ - -#pragma once - -// The following macros define the minimum required platform. The minimum required platform -// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run -// your application. The macros work by enabling all features available on platform versions up to and -// including the version specified. - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Specifies that the minimum required platform is Windows Vista. -#define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. -#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. -#define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. -#endif - From b3fe7f5b6c58043b9ecbae76dbf2a354dfa83077 Mon Sep 17 00:00:00 2001 From: minggo Date: Fri, 21 Jan 2011 16:26:51 +0800 Subject: [PATCH 9/9] fixed #307:merge TestAudioEngine into tests --- CocosDenshion/iphone/SimpleAudioEngine.mm | 2 +- .../project.pbxproj.REMOVED.git-id | 2 +- .../CocosDenshionTest/CocosDenshionTest.cpp | 25 ++++++++----------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/CocosDenshion/iphone/SimpleAudioEngine.mm b/CocosDenshion/iphone/SimpleAudioEngine.mm index 1fc8e1f698..dc48c71612 100644 --- a/CocosDenshion/iphone/SimpleAudioEngine.mm +++ b/CocosDenshion/iphone/SimpleAudioEngine.mm @@ -82,7 +82,7 @@ static void static_setBackgroundMusicVolume(float volume) static float static_getEffectsVolume() { - return [SimpleAudioEngine sharedEngine] effectsVolume]; + return [[SimpleAudioEngine sharedEngine] effectsVolume]; } static void static_setEffectsVolume(float volume) diff --git a/tests/test.iphone/test.iphone.xcodeproj/project.pbxproj.REMOVED.git-id b/tests/test.iphone/test.iphone.xcodeproj/project.pbxproj.REMOVED.git-id index be2288536b..c332a45ee3 100644 --- a/tests/test.iphone/test.iphone.xcodeproj/project.pbxproj.REMOVED.git-id +++ b/tests/test.iphone/test.iphone.xcodeproj/project.pbxproj.REMOVED.git-id @@ -1 +1 @@ -799b8dc3d35409585198b14143c621a7c25bea01 \ No newline at end of file +ec06c9185ab0388a65363f16742b75a344f3eb2f \ No newline at end of file diff --git a/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp b/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp index fb02f6d08d..ffbeec02ce 100644 --- a/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp +++ b/tests/tests/CocosDenshionTest/CocosDenshionTest.cpp @@ -1,6 +1,3 @@ -// to enable CCLOG() -#define COCOS2D_DEBUG 1 - #include "CocosDenshionTest.h" #include "cocos2d.h" #include "SimpleAudioEngine.h" @@ -156,18 +153,18 @@ void CocosDenshionTest::ccTouchesBegan(NSSet *pTouches, UIEvent *pEvent) NSSetIterator it = pTouches->begin(); CCTouch* touch = (CCTouch*)(*it); - m_tBeginPos = touch->locationInView( touch->view() ); + m_tBeginPos = touch->locationInView( touch->view() ); m_tBeginPos = CCDirector::sharedDirector()->convertToGL( m_tBeginPos ); } void CocosDenshionTest::ccTouchesMoved(NSSet *pTouches, UIEvent *pEvent) { - NSSetIterator it = pTouches->begin(); - CCTouch* touch = (CCTouch*)(*it); - - CGPoint touchLocation = touch->locationInView( touch->view() ); - touchLocation = CCDirector::sharedDirector()->convertToGL( touchLocation ); - float nMoveY = touchLocation.y - m_tBeginPos.y; + NSSetIterator it = pTouches->begin(); + CCTouch* touch = (CCTouch*)(*it); + + CGPoint touchLocation = touch->locationInView( touch->view() ); + touchLocation = CCDirector::sharedDirector()->convertToGL( touchLocation ); + float nMoveY = touchLocation.y - m_tBeginPos.y; CGPoint curPos = m_pItmeMenu->getPosition(); CGPoint nextPos = ccp(curPos.x, curPos.y + nMoveY); @@ -190,9 +187,9 @@ void CocosDenshionTest::ccTouchesMoved(NSSet *pTouches, UIEvent *pEvent) void CocosDenshionTestScene::runThisTest() { - CCLayer* pLayer = new CocosDenshionTest(); - addChild(pLayer); - pLayer->autorelease(); - + CCLayer* pLayer = new CocosDenshionTest(); + addChild(pLayer); + pLayer->autorelease(); + CCDirector::sharedDirector()->replaceScene(this); } \ No newline at end of file