我正在尝试创建一个指令,允许将元素定义为可点击或不可点击,并将定义如下:
<page is-clickable="true">
transcluded elements...
</page>
Run Code Online (Sandbox Code Playgroud)
我想得到的HTML是:
<page is-clickable="true" ng-click="onHandleClick()">
transcluded elements...
</page>
Run Code Online (Sandbox Code Playgroud)
我的指令实现如下所示:
app.directive('page', function() {
return {
restrict: 'E',
template: '<div ng-transclude></div>',
transclude: true,
link: function(scope, element, attrs) {
var isClickable = angular.isDefined(attrs.isClickable) && scope.$eval(attrs.isClickable) === true ? true : false;
if (isClickable) {
attrs.$set('ngClick', 'onHandleClick()');
}
scope.onHandleClick = function() {
console.log('onHandleClick');
};
}
};
});
Run Code Online (Sandbox Code Playgroud)
我可以看到,添加新属性后,Angular不知道ng-click,所以它不会触发.我尝试$compile在设置属性后添加一个,但它会导致无限链接/编译循环.
我知道我可以检查onHandleClick()函数内部是否isClickable值true,但我很好奇如何通过动态添加ng-click事件来实现这一点,因为我可能需要使用多个其他ng-*指令来执行此操作而我不想增加不必要的开销 有任何想法吗?
我有一个触摸事件异常,导致我的游戏在平板电脑上崩溃(或更具体地说,蜂窝)...我的手机上的游戏工作正常,我还没有听说过任何没有运行Android 3.0的人或更高.这是相关的日志信息......
E/AndroidRuntime(26487): java.lang.IllegalArgumentException: pointerIndex out of range
E/AndroidRuntime(26487): at android.view.MotionEvent.nativeGetAxisValue(Native Method)
E/AndroidRuntime(26487): at android.view.MotionEvent.getX(MotionEvent.java:1549)
E/AndroidRuntime(26487): at kieran.android.asteroids.GameUI.onTouchEvent(GameUI.java:665)
E/AndroidRuntime(26487): at android.view.View.dispatchTouchEvent(View.java:4616)
E/AndroidRuntime(26487): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1560)
E/AndroidRuntime(26487): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
E/AndroidRuntime(26487): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1560)
E/AndroidRuntime(26487): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
E/AndroidRuntime(26487): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1560)
E/AndroidRuntime(26487): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
Run Code Online (Sandbox Code Playgroud)
......这是调用它的代码.对我来说似乎很好,但也许蜂窝中有一个尚未修复的错误?上面日志中的行号665对应于该float x = event.getX(id);行.它必须与我获取which变量的方式有关吗?但它在手机/ 2.3及更低版本上运行良好......
int action = event.getAction();
int actionCode = action & MotionEvent.ACTION_MASK;
if(actionCode == MotionEvent.ACTION_POINTER_UP || action == MotionEvent.ACTION_UP) {
int which = action >> MotionEvent.ACTION_POINTER_ID_SHIFT;
int id = event.getPointerId(which);
float x = event.getX(id); …Run Code Online (Sandbox Code Playgroud) 好的,这就是我到目前为止所拥有的.我在android上构建了FFmpeg并且能够很好地使用它.在从java端传递所选文件名后,我能够将视频加载到FFmpeg中.为了节省性能,我在NDK中编写视频播放器,而不是通过JNI将帧从FFmpeg传递到java.我想将视频中的帧发送到OpenGL表面.我无法弄清楚如何获取每帧视频并将其渲染到OpenGL表面上.我一直坚持试图解决这个问题几个星期,现在没有运气.希望有人可以指出我正确的方向.
谢谢!
有没有人知道如何在FFmpeg中实现秒(或毫秒)的搜索.我目前有一个使用av_read_frame()运行视频帧的循环,我想确定此帧应该以秒为单位的时间.如果它到达某个点,那么我想寻找视频中的稍后点.顺便说一下,它不是一个视频播放器,只是处理帧.我听说我应该可以从数据包中获取dts或pts,但它总是返回0.
好的,我正在开发一款Android游戏.我需要实现像素完美碰撞检测.我已经在每个图像周围设置了边界框,每个边界框都被转换为匹配图像的当前旋转.一切都很好.我还将每个位图的像素数据存储在一个数组中.有人可以帮我找出检测像素是否重叠的最有效方法吗?在此先感谢您的帮助!
我在Android上创建了一个游戏,我有点暂时解决这个问题,现在我回到它.在我的游戏中,我有背景节拍,枪声,爆炸......等等,我需要能够同时播放它们.现在,当我在SoundPool类上调用play时,当前正在播放的声音被中断,新的声音开始播放.我的SoundManager类以及使用情况如下.任何帮助都会非常感激,因为这是我第一次需要这么多音效的游戏.谢谢!
public class SoundManager {
private SoundPool mSoundPool;
private HashMap<Integer, Integer> mSoundPoolMap;
private AudioManager mAudioManager;
private Context mContext;
public SoundManager(Context theContext) {
mContext = theContext;
mSoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
mSoundPoolMap = new HashMap<Integer, Integer>();
mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
}
public void addSound(int index, int SoundID) {
mSoundPoolMap.put(index, mSoundPool.load(mContext, SoundID, 1));
}
public void playSound(int index) {
float streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
streamVolume = streamVolume / mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
mSoundPool.play((Integer) mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f);
}
public void playLoopedSound(int index) { …Run Code Online (Sandbox Code Playgroud) 有谁知道是否有可能获得有关设备范围内所有蜂窝塔的信息?能够获得它们的位置或者可能有关于它们的任何其他信息以及我将如何去做它?
我有一个模型矩阵,我正在跟踪网格在我的世界中的位置.随着每次调用glRotate()和glTranslate()我有一个相应的呼叫modelMatrix.rotate()和modelMatrix.translate()这似乎正常工作.
现在我需要更新与我的每个模型相关联的边界框.我在libGDX框架中工作,在这里找到的BoundingBox类中,有一个方法应该允许我将矩阵应用到边界框但是值没有正确更新,我认为这可能是我尝试的方式申请.有任何想法吗?mul()
这是我的相关代码:
gl.glPushMatrix();
// Set the model matrix to the identity matrix
modelMatrix.idt();
// Update the orbit value of this model
orbit = (orbit + ORBIT_SPEED * delta) % 360;
gl.glRotatef(orbit, 1.0f, 1.0f, 0);
// Update the model matrix rotation
modelMatrix.rotate(1.0f, 1.0f, 0, orbit);
// Move the model to it's specified radius
gl.glTranslatef(0, 0, -ORBIT_DISTANCE);
// Update the model matrix translation
modelMatrix.translate(0, 0, -ORBIT_DISTANCE);
// Update …Run Code Online (Sandbox Code Playgroud) 如何检测按下的电源按钮或锁定屏幕按钮?当我的游戏以这种方式暂停时,它会导致游戏崩溃,因为我需要在线程发生时暂停它.
有谁知道如何检测设备上的耳机插孔是否在Android上拔掉?我有一个音乐播放器,我需要在拔下耳机时暂停音乐.我发现最接近的是使用AudioManager.这是正确的方向吗?
任何人都可以给我任何关于让GStreamer在Android上工作的提示.我之前从未使用它,我想将它与FFmpeg一起使用(我已经编译了FFmpeg并且在Android上工作正常).我只想使用GStreamer来帮助完成一些处理,因为学习FFmpeg API有点像噩梦哈哈.在此先感谢任何帮助!
android ×9
java ×7
ffmpeg ×3
android-ndk ×2
audio ×2
c ×2
opengl-es ×2
angularjs ×1
bitmap ×1
c++ ×1
exception ×1
gstreamer ×1
javascript ×1
keylistener ×1
libgdx ×1
listener ×1
location ×1
media-player ×1
multi-touch ×1