小编Mad*_*sen的帖子

服务和广播接收器之间的差异

我试图了解服务和广播接收器之间的区别,正如我所看到的,他们可以做同样的事情.

例如,我有一个应用程序:App1提供名为ToastHelloWorld的服务,它只创建一个Toast和stopSelf().我使用具有操作名称的"intent"过滤器将其公开给其他应用程序:"com.test.HelloToast"

现在我有另一个应用程序:App2我想隐式使用动作"com.test.HelloToast",所以我调用startService(new Intent("com.test.HelloToast"));

它的工作原理.

当我可以用服务做所有事情并且没有5秒执行限制的限制时,为什么我会使用广播接收器?

我知道大多数"系统事件"是通过广播公开的,但它们不能仅作为服务意图发布吗?

android

5
推荐指数
1
解决办法
3708
查看次数

使用块时的iPhone EXC_BAD_ACCESS

我试图使用块创建一个简单的回调.我有一个MainViewController addSubView另一个DatePickerViewController.view我创建了一个像这样的块

typedef void(^DateChangedBlock)(NSDate*);
Run Code Online (Sandbox Code Playgroud)

我在我的DatePickerViewController上调用了一个方法

setOnDateChangedCallback:(DateChangedBlock)callback
Run Code Online (Sandbox Code Playgroud)

我将回调存储在DatePickerViewController的属性中.DatePickerViewController的视图是一个UIDatePicker实例,我已将IBAction绑定到更改为执行此操作的方法的值.

- (IBAction)dateChanged:(id)sender {

    if (dateChangedCallback != nil)
    {
        dateChangedCallback(nil);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我在MainViewController中注册块的方法

DatePickerViewController *dateController = [[DatePickerViewController alloc] initWithNibName:@"DatePickerView" bundle:nil];

self.datePicker = dateController;
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)];
[self.view addSubview:textView];
DateChangedBlock myBlock = ^(NSDate *newDate) {
 textView.text = @"testing";
};

[self.datePicker setOnDateChanged: myBlock];
[self.datePicker dateChanged:self]; // force trigger (this works).
Run Code Online (Sandbox Code Playgroud)

当我强制触发DatePickerViewController上的dateChanged方法时,它没有问题.但是当datepicker本身通过IBAction触发方法时,我得到一个EXC_BAD_ACCESS错误.此方法在"int retVal"行上发生错误.

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch objective-c

5
推荐指数
1
解决办法
8172
查看次数

OpenGL photoshop叠加混合模式

我试图实现一个粒子系统(使用OpenGL 2.0 ES),其中每个粒子由具有简单纹理的四边形组成

红色像素是透明的

红色像素是透明的.每个粒子的随机α值为50%至100%

现在棘手的部分是我喜欢每个粒子都有一个像Photoshop"叠加"的混合模式我尝试了很多不同的组合与glBlendFunc()但没有运气.

我不明白我如何在片段着色器中实现这一点,因为我需要有关片段当前颜色的信息.这样我就可以根据当前和纹理颜色计算出一种新颜色.

我还想过使用一个帧缓冲对象,但我想我需要将每个粒子重新渲染我的frame-buffer-object到一个纹理中,因为每个粒子都是每个粒子,因为当粒子重叠时,我需要计算出的片段颜色其他.

我发现数学'和其他信息重新评估叠加计算,但我很难弄清楚我可以去实现这个方向.

我希望有这样的效果:

重叠粒子以及它们如何融合在一起

shader opengl-es ios opengl-es-2.0

5
推荐指数
1
解决办法
4364
查看次数

Android OpenGL ES 2.0

我试图在Android OpenGL ES 2.0示例中显示一个简单的三角形.但没有出现,我只是不明白为什么:),我没有错误或任何东西,只是一个蓝色的屏幕(这是我的清晰的颜色).也许将我的模型放在外面的投影矩阵有问题吗?

package dk.madslee.modelviewer;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.ConfigurationInfo;
import android.content.res.Resources;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.Matrix;
import android.os.Bundle;
import android.util.Log;

// http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLES20TriangleRenderer.html

public class MainActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        final Resources resources = getResources();
        GLSurfaceView surfaceView = new GLSurfaceView(this);
        surfaceView.setEGLContextClientVersion(2); // enable OpenGL 2.0

        Log.e("opengl", Boolean.toString(detectOpenGLES20()));

        surfaceView.setRenderer(new GLSurfaceView.Renderer()
        {   
            public static final int FLOAT_BYTE_LENGTH = 4;

            private int …
Run Code Online (Sandbox Code Playgroud)

android opengl-es

3
推荐指数
1
解决办法
9375
查看次数

使用Android进行2D绘图

我试图了解Android绘图的工作原理.

我希望有人可以解释绘图组件如何相互关联(视图,可绘制,画布,位图)

这一切看起来都很混乱,文档也没有很好地解释它.

您通过onDraw()在View中注入的Canvas对象中的位图是代表整个显示,还是只是视图绘制的块?

drawable做了什么,它们只是将一组命令封装到Canvas对象的对象吗?

我希望有人可以帮助我基本了解它是如何工作的,我没有eny java背景只有Action脚本和C#(silverlight).

android

2
推荐指数
1
解决办法
2845
查看次数

自定义流对象?(的NodeJS)

是否可以扩展/初始化require('stream').对象?我希望能够创建一个流对象,我可以将数据推送到新对象并在新数据到达时通知所有侦听器.

我尝试了以下方法:

var stream = require('stream');
var test = new stream.Stream();
test.write(new Buffer('mads'));
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

TypeError: Object [object Object] has no method 'write'
    at repl:1:6
    at Interface.<anonymous> (repl.js:168:22)
    at Interface.emit (events.js:67:17)
    at Interface._onLine (readline.js:153:10)
    at Interface._line (readline.js:408:8)
    at Interface._ttyWrite (readline.js:585:14)
    at ReadStream.<anonymous> (readline.js:73:12)
    at ReadStream.emit (events.js:88:20)
    at ReadStream._emitKey (tty_posix.js:306:10)
    at ReadStream.onData (tty_posix.js:69:12)
    at ReadStream.emit (events.js:67:17)
Run Code Online (Sandbox Code Playgroud)

node.js

2
推荐指数
1
解决办法
5000
查看次数

c ++向量和指针

据我了解,如果我不存储指针,c ++中的所有内容都会被复制,这会导致性能不佳(忽略我的示例的简单性).所以我认为我将我的对象存储为指针而不是我的向量中的字符串对象,那对性能更好吗?(假设我有很长的琴弦和很多琴弦).

当我尝试迭代我的字符串指针向量时的问题是我无法从它们中提取实际值

string test = "my-name";
vector<string*> names(20);
names.push_back(&test);

vector<string*>::iterator iterator = names.begin();
while (iterator != names.end())
{
    std::cout << (*iterator) << ":" << std::endl;
    // std::cout << *(*iterator); // fails

    iterator++;
}
Run Code Online (Sandbox Code Playgroud)

看到注释行,我在接收字符串指针时没有问题.但是,当我尝试获取字符串指针值时,我得到一个错误(我无法找到错误的错误,但程序失败了).

我也尝试在一个新的字符串变量中存储(迭代器),但它没有帮助?

c++

1
推荐指数
1
解决办法
715
查看次数