小编Tas*_*ons的帖子

Android截图表面视图显示黑屏

我试图通过代码获取我的游戏截图并通过意图分享.我可以做这些事情,但屏幕截图总是显示为黑色.以下是与共享屏幕截图相关的代码:

View view = MainActivity.getView();
view.setDrawingCacheEnabled(true);
Bitmap screen = Bitmap.createBitmap(view.getDrawingCache(true));
.. save Bitmap
Run Code Online (Sandbox Code Playgroud)

这是在MainActivity中:

view = new GameView(this);
view.setLayoutParams(new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.FILL_PARENT,
            RelativeLayout.LayoutParams.FILL_PARENT));

public static SurfaceView getView() {
    return view;
}
Run Code Online (Sandbox Code Playgroud)

而观点本身:

public class GameView extends SurfaceView implements SurfaceHolder.Callback {
private static SurfaceHolder surfaceHolder;
...etc
Run Code Online (Sandbox Code Playgroud)

这就是我绘制一切的方式:

Canvas canvas = surfaceHolder.lockCanvas(null);
        if (canvas != null) {
                Game.draw(canvas);
...
Run Code Online (Sandbox Code Playgroud)

好的,根据一些答案,我构建了这个:

public static void share() {
    Bitmap screen = GameView.SavePixels(0, 0, Screen.width, Screen.height);
    Calendar c = Calendar.getInstance();
    Date d = c.getTime();
    String path = …
Run Code Online (Sandbox Code Playgroud)

android surfaceview

29
推荐指数
4
解决办法
3万
查看次数

多人游戏 - 客户端插值计算?

我正在使用javascript中的socket io创建一个多人游戏.除了客户端插值之外,游戏目前完美无缺.现在,当我从服务器获取数据包时,我只需将客户端位置设置为服务器发送的位置.这是我试图做的:

getServerInfo(packet) {
     var otherPlayer = players[packet.id]; // GET PLAYER
     otherPlayer.setTarget(packet.x, packet.y); // SET TARGET TO MOVE TO
     ...
}
Run Code Online (Sandbox Code Playgroud)

所以我设置了球员的目标位置.然后在Players Update方法中,我只是这样做:

var update = function(delta) {
    if (x != target.x || y != target.y){
        var direction = Math.atan2((target.y - y), (target.x - x));
        x += (delta* speed) * Math.cos(direction);
        y += (delta* speed) * Math.sin(direction);
        var dist = Math.sqrt((x - target.x) * (x - target.x) + (y - target.y)
                * (y - target.y));
        if (dist < treshhold){
            x …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm multiplayer

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

左鼠标停止并在Chrome上移动时,Html画布滞后

我创建了一个画布,我已经添加了鼠标事件:

canvas = document.getElementById('canvas');
context = canvas.getContext('2d');
canvas.width = screenWidth;
canvas.height = screenHeight;

... 

// CALLED AT START:
function setup() {
    // Mouse movement:
    document.onmousemove = function(e) {
        e.preventDefault();
        target.x = e.pageX;
        target.y = e.pageY;
        angle = Math.atan2((target.y - localPlayer.getY()),
            (target.x - localPlayer.getX()));
        // Distance to mouse Check:
        var dist = Math.sqrt((localPlayer.getX() - target.x)
            * (localPlayer.getX() - target.x) + (localPlayer.getY() - target.y)
            * (localPlayer.getY() - target.y));
        var speedMult = dist / (canvas.height / 4);
        socket.emit("update", {
            ...
        });
    }
    document.onmousedown …
Run Code Online (Sandbox Code Playgroud)

html javascript google-chrome canvas

18
推荐指数
2
解决办法
1717
查看次数

Android - 减少相机眩光(照片/视频)

我试图减少拍摄反射表面的照片或视频时产生的眩光; 窗户,眼镜或其他移动设备.

我已经对这个主题做了一些研究,似乎存在一些算法.但我还没有找到一个编码实现.

我需要这个的原因是因为我正在创建一个应用程序,允许您使用设备上的相机在其他设备屏幕上阅读不同的颜色.如果有很多眩光,颜色将无法正确读取.它需要能够区分16种颜色.

是否有任何现有的实现,如果是,我将如何在Android中实现它们?

android android-camera

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

更新后Android Studio中的窗口>首选项缺失

我更新了Android Studio(Windows).现在我再也找不到Window> Preferences了.他们搬了吗?我现在打开偏好的方式是什么?

android-studio

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

如何评估Google Play热门应用?

我想知道Google Play如何粗略计算顶级应用程序是什么.这是因为我制作了一个应用程序,它的排名是60-70,这比许多其他下载量更多的应用程序要好.因此,我想知道如何评估应用程序,因为它显然不仅仅基于下载次数.

我用Google搜索了很多但我找不到任何东西.有没有人知道它是如何完成的?并根据什么变量/信息?(每日下载?总下载量?)

知道这将是非常有趣和有益的!

android google-play

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

Javascript垃圾收集.创建对象和变量?

我目前正在使用Javascript构建游戏.经过一些测试后,我开始注意到偶然的延迟,这只会是由GC引起的.我决定在它上面运行一个配置文件.结果表明GC实际上是罪魁祸首:

GC配置文件

我读到创建新对象会导致很多GC.我想知道是否有这样的事情:

var x = [];
Run Code Online (Sandbox Code Playgroud)

也创建任何Garbage,因为Java中的原始类型不会这样做.由于Javascript中没有真正的类型,我不确定.此外,哪一个最适合创建最少量的垃圾:

选项1:

function do() {
    var x = [];
    ...
}
Run Code Online (Sandbox Code Playgroud)

选项2:

var x = [];
function do() {
    x = [];
    ...
}
Run Code Online (Sandbox Code Playgroud)

选项3:

function do() {
    x = [];
    ...
}
Run Code Online (Sandbox Code Playgroud)

或选项4:

function do() {
    var x = [];
    ...
    delete x;
}
Run Code Online (Sandbox Code Playgroud)

选项5:

var x = [];
function do() {
    x.length = 0;
    ...
}
Run Code Online (Sandbox Code Playgroud)

在我的案例中,do函数被称为30次/秒.它在阵列上运行几个操作.

我想知道这一点,因为我只是将我的所有变量全局化以试图阻止它们被GC收集,但GC没有太大变化.

您是否也可以提供一些常见的例子来说明会产生大量垃圾和一些替代品.

谢谢.

javascript garbage-collection

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

适当缩放Javascript Canvas游戏

我试图根据屏幕尺寸动态扩展我的画布游戏.我理解如何基于屏幕大小来调整画布大小,但我也希望调整内容的大小.基本上我希望游戏在每台设备上看起来都一样.我目前的问题是当有4k屏幕的人玩游戏时,他们可以很容易地看到整个地图.当有人拥有一个非常小的屏幕时,他们几乎看不到任何东西.有一种简单有效的方法吗?我试图做以下事情:

var maxWidth = 1920;
var maxHeight = 1080;

...

function resize() {
    c.width = screenWidth = window.innerWidth;
    c.height = screenHeight = window.innerHeight;
    widthToHeight = screenWidth / screenHeight; // ASPECT RATIO

    var scalerAmnt = (maxWidth + maxHeight )
            / (screenWidth + screenHeight);
    context.scale(scalerAmnt, scalerAmnt); 
}
Run Code Online (Sandbox Code Playgroud)

如果我像这样缩放画布,则会产生不希望的结果.它偏离中心,而且太大了.如您所见,我已设置最大宽度和高度.基本上我试图让游戏在每个设备上看起来都像在具有该分辨率的机器上一样.

现场演示:www.vertix.io

更新:这是一张目前的图片: 在此输入图像描述

javascript html5 canvas

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

为垃圾收集创建以下for loop for bad?

我有一个更新方法,每隔ms更新游戏中的级别.在这个方法中,我有几个for循环,如下所示:

for (int i = 0: i < 10; ++i){

}
Run Code Online (Sandbox Code Playgroud)

当我说:

int i = 0
Run Code Online (Sandbox Code Playgroud)

这会造成很多垃圾吗?还有其他选择吗?

谢谢

java android garbage-collection

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

Android Canvas.基于Touch的圆形路径移动和旋转位图?

是否可以根据触摸事件沿圆形路径移动和旋转图像,如下所示: 在此输入图像描述

我看过这个问题: 基于Android中的触摸事件以圆周运动移动图像 但是它只告诉我如何沿着圆圈移动图像,而不是旋转它.

android canvas bitmap

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

Android Visualizer是否检测到节拍?和Visualizer.setCaptureSize()不起作用?备择方案?

我正在使用Visualizer绘制我正在播放的声音文件的可视化效果。声波正在显示,但是我想使其更详细,因为它会影响我的帧速率。关于此的文档非常有限。因此,我尝试执行以下操作:

mVisualizer.setCaptureSize(2);
Run Code Online (Sandbox Code Playgroud)

要将捕获率设置为非常低的值。但是,似乎线条绘制的细节相同。我在文档中读到:

Sets the capture size, i.e. the number of bytes returned by getWaveForm(byte[]) and getFft(byte[]) methods.
Run Code Online (Sandbox Code Playgroud)

我遇到的另一个问题是,我想检测正在播放的声音文件中能量较高的声音,以便可以在屏幕上直观地表示它们。例如:屏幕与基线一起闪烁。这是我到目前为止的内容:

public static void setupVisualizer() {
    mVisualizer = new Visualizer(mpSong.getAudioSessionId());
    mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]);
    mVisualizer.setDataCaptureListener(
            new Visualizer.OnDataCaptureListener() {
                public void onWaveFormDataCapture(Visualizer visualizer,
                        byte[] bytes, int samplingRate) {
                    Game.updateVisualizer(bytes);
                }

                public void onFftDataCapture(Visualizer visualizer,
                        byte[] bytes, int samplingRate) {
                }
            }, Visualizer.getMaxCaptureRate() / 2, true, false);
}
Run Code Online (Sandbox Code Playgroud)

是否可以检测到该听众内部的某些声音?还是有什么选择?对不起,我的英语不好。非常感谢您抽出宝贵时间的朋友。

audio android visualizer

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

在Android中获取时间直到某个日期

我使用日期和时间对话框来获取用户指定的事件的日期和时间.该数据是通过执行以下操作转换的:

int yearE = Integer.valueOf(evntDate.split("/")[2]);
int monthE = Integer.valueOf(evntDate.split("/")[1]);
int dayE = Integer.valueOf(evntDate.split("/")[0]); 
int hour = Integer.valueOf(evntTm.split(":")[0]);
int min = Integer.valueOf(evntTm.split(":")[1]);
Run Code Online (Sandbox Code Playgroud)

价值观:

eventDate = "3/5/2015";
eventTime = "13:2";
Run Code Online (Sandbox Code Playgroud)

然后我获取该数据并将其转换为毫秒并将其存储在数据库中:

newCalendar.set(yearE, monthE, dayE,hour, min, 0);
startTime = newCalendar.getTimeInMillis();
...
Run Code Online (Sandbox Code Playgroud)

当我从数据库加载信息时,我尝试计算到指定日期之前剩余的时间.所以我做了以下事情:

Long timeL = Long.valueOf(time);
Calendar eventDay = Calendar.getInstance();
eventDay.setTimeInMillis(timeL);
Calendar today = Calendar.getInstance();
long diff = eventDay.getTimeInMillis() - today.getTimeInMillis();

// CONVERT:
int seconds = (int) TimeUnit.MILLISECONDS.toSeconds(diff);
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(diff);
int hours = (int) TimeUnit.MILLISECONDS.toHours(diff);
int days = (int) TimeUnit.MILLISECONDS.toDays(diff); …
Run Code Online (Sandbox Code Playgroud)

android android-datepicker

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