小编Mas*_*uin的帖子

是否可以在Sprite Kit中使用圆圈(SKShapeNode)作为遮罩?

我正在尝试在Sprite Kit项目中创建一个圆形蒙版.我像这样创建圆圈(将其定位在屏幕的中心):

SKCropNode *cropNode = [[SKCropNode alloc] init];

SKShapeNode *circleMask = [[SKShapeNode alloc ]init];
CGMutablePathRef circle = CGPathCreateMutable();
CGPathAddArc(circle, NULL, CGRectGetMidX(self.frame), CGRectGetMidY(self.frame), 50, 0, M_PI*2, YES);
circleMask.path = circle;
circleMask.lineWidth = 0;
circleMask.fillColor = [SKColor blueColor];
circleMask.name=@"circleMask";
Run Code Online (Sandbox Code Playgroud)

在代码中,我将其设置为以下掩码cropNode:

[cropNode setMaskNode:circleMask];
Run Code Online (Sandbox Code Playgroud)

... ...而不是显示在圆圈内的内容,掩码显示为正方形.

是否可以使用a SKShapeNode作为蒙版,还是需要使用图像?

iphone objective-c ios7 sprite-kit skcropnode

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

Mayavi:围绕y轴旋转

我正在使用mayavi的triangular_mesh方法绘制3D网格.该数据描述了在3D空间中面朝下放置的人体轮廓(因此cmap可以用来表示与相机的距离).

这是用于生成绘图的代码(面和顶点来自外部对象,这里有太多不能显示):

from mayavi import mlab

import math
import numpy as np
import sys
import os


fig = mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(1920, 980))

a = np.array(this_mesh.vertices - refC.conj().transpose())  # this_mesh is an object created from external data files 

this_mesh.faces = this_mesh.faces.astype(int) -1  # mesh data is generated by matlab, which is 1-indexed

m = mlab.triangular_mesh(x, y, z, this_mesh.faces, opacity=0.75)

mlab.axes(extent=[-1100, 1100, -1100, 1100, -1100, 1100])
Run Code Online (Sandbox Code Playgroud)

在不移动相机的情况下,轮廓面朝下.为了正面观看模型,我正在改变相机的方位角和高度,以便从上到下查看图形.这显示了预期的轮廓.

mlab.view(azimuth=0, elevation=180)
mlab.show()
Run Code Online (Sandbox Code Playgroud)

我的下一个任务是创建一系列图像,其中摄像机围绕绘图平移,从面向右侧的轮廓开始,并朝向左侧完成.

复杂的是,为了获得深度信息的色彩图,我已经移动了视图的方位角和高度(如上面的代码所示).Mayavi有更多选择移动相机而不是matplotlib,但它似乎没有办法围绕Y轴旋转,所以我猜我需要对方位角和高程执行一些复杂的计算来实现同样的结果 - 但我不知道从哪里开始(我刚开始在3D空间工作,而我的脑子还没想到那样). …

python 3d mayavi

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

Emscripten canvas + jQuery - 切换焦点

我有一个HTML页面大致分为30% - 70%分为两个垂直列.左列包含聊天提要(通过Node和Socket.io处理),右列包含emscripten生成的canvas(ID为ID canvas).画布包含一个基本的3D世界,用户可以使用标准的第一人称控件进行导航(WASD用于移动,鼠标用于"外观").

默认情况下,画布会吞下所有键盘事件.我已在canvas初始化过程中使用以下代码修复此问题:

Module.preRun.push(function () {
    ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT = "#canvas";
});
Run Code Online (Sandbox Code Playgroud)

这允许我手动关注聊天框,键入消息并提交.

我遇到的问题是,一旦聊天消息被提交,我尝试使用以下代码将焦点返回到画布(允许玩家使用WASD导航3D世界):

 $('#canvas').focus();
Run Code Online (Sandbox Code Playgroud)

这名义上将焦点返回到画布,但鼠标和键盘移动不起作用.奇怪的是,单击选项卡/浏览器窗口然后进入画布似乎工作 - 焦点返回到画布,我可以再次导航.手动呼叫$(window).blur().focus()不起作用.

有人知道如何在发送聊天消息后将焦点强制回到画布吗?

- 更新 -

hiddenField在画布后面添加了一个文本输入字段(ID为),我使用preRun函数将画布的关键事件分配给该字段(画布由于某种原因不能一致地工作).

这个工作正常,直到用户点击画布 - 例如,进入聊天字段 - 因此画布停止响应任何键盘或鼠标输入,即使我正在触发焦点回到hiddenField(并且可以看到它正在获取它) .

似乎在页面上做任何事情都与emscripten的聚焦行为(我相信与窗口对象相关)发生冲突,并阻止画布重新获得焦点.

当然有一些方法可以让emscripten画布与其他HTML元素一起生活吗?

javascript jquery canvas emscripten

10
推荐指数
2
解决办法
516
查看次数

在SpriteKit(SKCropNode)中为蒙版图像设置动画

我正在使用Sprite Kit来创建我的第一个iOS应用程序,而且我在看似非常基本的问题上磕磕绊绊.

我正在尝试为fillNodeSKCropNode(cropNode)的contents()设置动画.下面的代码设置SKScene就好了(我看到插图被正确掩盖,放在正确位置的背景图像上)......

SKSpriteNode *logoBG = [[SKSpriteNode alloc] initWithImageNamed:logoBackground];
logoBG.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[self addChild:logoBG];

SKCropNode *cropNode = [[SKCropNode alloc] init];
cropNode.maskNode = [[SKSpriteNode alloc] initWithImageNamed:logoMask];
SKSpriteNode *fillNode = [[SKSpriteNode alloc] initWithImageNamed:logoImage];

[cropNode addChild:fillNode];
fillNode.position = CGPointMake(0,300);
cropNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
self.logoContent = cropNode;
[self addChild:self.logoContent];
Run Code Online (Sandbox Code Playgroud)

...但我无法访问蒙面图示以设置其位置的动画(我希望它从蒙版外面开始并滑入到位置):

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;

SKAction *moveUp = [SKAction moveByX: 0 y: 100 duration: 5];
SKAction *moveSequence = [SKAction sequence:@[moveUp]];
[self.logoContent.target_illustration runAction: moveSequence completion:^{ …
Run Code Online (Sandbox Code Playgroud)

animation ios7 sprite-kit skcropnode

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

在signalR中记录服务器事件

我正在使用SignalR编写基于C#的Web应用程序.到目前为止,我有一个"大厅"区域(允许开放式通信)和"会话"区域(5人组可以进行私人对话,任何服务器交互仅显示给组).

我想要做的是在内存中创建一个"日志记录"对象 - 每个会话一个(所以如果有三个五人组,我将有三个日志对象).

'session'区域继承自Hubs(和IDisconnect),并有几种方法(Join,Send,Disconnect等).这些方法将数据传递回JavaScript客户端,后者调用客户端JS函数.我尝试过使用构造函数方法:

public class Session : Hub, IDisconnect
{
    public class Logger
    {
        public List<Tuple<string, string, DateTime>> Log;

        public List<Tuple<string, string, DateTime>> AddEvent(string evt, string msg, DateTime time)
        {
            if (Log == null)
            {
                Log = new List<Tuple<string, string, DateTime>>();
            }
            Log.Add(new Tuple<string, string, DateTime>(evt, msg, time));

            return Log;
        }

    }

    public Logger eventLog = new Logger();

    public Session()
    {
        eventLog = new Logger();
        eventLog.AddEvent("LOGGER INITIALIZED", "Logging started", DateTime.Now);
    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# signalr

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

将道具传递给 Typescript 中的功能性 React 组件

我正在将基于类的 React 应用程序转换为使用带有功能组件的 React 钩子,但是当我尝试将 props 传递给子组件时遇到了一个奇怪的错误。

我想传递两个道具:critterTypecritter

critterTypeenum这样声明的:

export enum critterType {
    bug,
    fish,
}
Run Code Online (Sandbox Code Playgroud)

critter是一个ICritter具有以下接口的对象:

export interface ICritter {
    id: number;
    name: string;
    thumbnail: string;
    location: string;
    price: number;
    times: ITimeSpan[];
    northMonths: number[];
    southMonths: number[];
    silhouetteSize?: number;
}
Run Code Online (Sandbox Code Playgroud)

(我们暂时不需要担心ITimeSpan。)

组件CritterEntry看起来像这样:

function CritterEntry(typeOfCritter: critterType, critter: ICritter) {
    const critterId = critter.id.toString();    

    const state = store.getState();

    let caughtSource: string[] = [];
    let donatedSource: string[] = []; …
Run Code Online (Sandbox Code Playgroud)

javascript enums typescript reactjs react-redux

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