小编Jem*_*Jem的帖子

移动HTML Canvas元素的"相机"

我正试图找到一种干净的方法来"移动画布元素的相机".

这适用于我的原型游戏(侧卷轴).我很乐意认为有一个更好的解决方案,而不是移动整组节点来模拟移动的"相机".

几乎可以肯定已经阅读了一个简单的操作方法(使用偏移?)但事实上我没有发现任何类似的东西开始引起怀疑......我想象中读到了吗??

谢谢你帮我澄清...... J

html5 camera canvas offset pan

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

PHP:通过引用函数传递的数组?

我有这个PHP函数,必须在给定的数组上执行一些处理:

processArray($arrayToProcess) {

  $arrayToProcess['helloStackOverflow'] = TRUE;
}
Run Code Online (Sandbox Code Playgroud)

稍后,代码调用以下内容:

$niceArray = array('key' => 'value');
processArray($niceArray);
Run Code Online (Sandbox Code Playgroud)

在processArray函数之外,"helloStackOverflow"键不可用.我试着调用以下内容:

processArray(&$niceArray);
Run Code Online (Sandbox Code Playgroud)

使用"&"会有所帮助,但会引发一些警告:

不推荐使用的功能:不推荐使用Call-time pass-by-reference; 如果您想通过引用传递它,请修改populateForm_withTextfields()的声明

试过&在那里,但这只是停止代码.

我该怎么做?

php arrays function parameter-passing pass-by-reference

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

PHP变量来访问数组中的变量

不习惯使用php,我遇到了访问数组及其子数据的问题.

$form['signatories']['signatory1'] = array(...);
Run Code Online (Sandbox Code Playgroud)

我必须创建一个"指针"指向上面一行中创建的数组,我期望以下工作:

$cluster = $form['signatories']['signatory1'];
Run Code Online (Sandbox Code Playgroud)

测试我访问相同的"内存空间"证明我错了:

$cluster['signatory_name'] = array(...)
// $form['signatories']['signatory1'] has no elements
// $cluster has a sub element
Run Code Online (Sandbox Code Playgroud)

像cluster一样,我希望它指向的数组的副本.

我该怎么办?我尝试使用某些博客中提到的"&"参考符号,但这没有帮助.

谢谢!J.

php arrays reference

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

Angular 2 + Material:无法使用带有第二个参数“text”、“card”等的 map-get

使用Angular 2 (4) + Material,我需要自定义一个组件的主题。我首先尝试使用内置调色板,但不断收到“错误:未定义”。仅当 map-get 传递“primary”、“accent”或“warn”作为第二个参数时才有效:

样式.scss

@import '~@angular/material/theming';
@include mat-core();

@import 'app/app.component.scss-theme';

$default-theme-primary: mat-palette($mat-light-green);
$default-theme-accent:  mat-palette($mat-indigo);
$default-theme-warn:    mat-palette($mat-red);
$default-theme: mat-light-theme($default-theme-primary, $default-theme-accent, $default-theme-warn);

@include angular-material-theme($default-theme);
@include app-component-theme($default-theme);
Run Code Online (Sandbox Code Playgroud)

app.component.scss-theme.scss

@import '~@angular/material/theming';

@mixin app-component-theme($theme){

  $primary: map-get($theme, primary);
  $accent: map-get($theme, accent);

  $text: map-get($theme, text);
  $card: map-get($theme, card);
  $lighter: map-get($theme, lighter);
  $darker: map-get($theme, darker);

  .test{
    font-size: 5em;
    color: mat-color($primary)!important; // works
    // color: mat-color($darker)!important; // fails
    // color: mat-color($lighter)!important; // fails
    // color: mat-color($text)!important; // fails
    // color: mat-color($card)!important; // fails
  }
} …
Run Code Online (Sandbox Code Playgroud)

sass angular-material angular

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

Angular 4:无法从响应中读取标头 - 而不是CORS问题

在服务器自动更新令牌的上下文中,我正在努力解决基本问题:从响应中获取头数据.

它似乎与CORS无关,因为我的Node/express allwos授权/ x-access-token并相应地响应(请参阅下面的网络选项卡screeencap).

我希望看到工作的第一步是简单地从响应中读取标题.请参阅我的代码,它是文档中的样板文件.获取"Content-Length"的事件返回null.

AUTH-service.ts

login(username:string, password:string):Observable<boolean>{
    this.loggedIn = false;
    return new Observable( (observer:Observer<boolean>) => {

      const body = {user: username, pwd: password};
      const url = this.config.API_ENDPOINT_PUBLIC_AUTH;

      this.httpClient.post(url, body, {
        responseType: 'text',
        observe: "response"
      }).first().subscribe(
        (response:HttpResponse<string>) => {

          // DEBUG
          console.log(response.headers.get('Authorization'));
          console.log(response.headers.get('X-Test-Header'));
          console.log(response.headers.get('Content-length'));


          this.token = response.headers.get('Authorization');
          this.storeToken(this.token);
          this.currentUser = username;
          this.loggedIn = true;
          this.authChanged$.next('auth');
          observer.next(true);
        },
        (err) => observer.next(false),
        () => {},
      );
    });
  }
Run Code Online (Sandbox Code Playgroud)

控制台输出:

空值

空值

空值

将此与此请求的网络选项卡的内容进行比较:

在此输入图像描述

不用说我的HttpInterceptor也不起作用 - 在响应中提供"Authorization"标头时,它将该值用作新标记.这样可以实现令牌的自动续订:

token.interceptor.ts

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> …
Run Code Online (Sandbox Code Playgroud)

angular-http-interceptors angular angular-httpclient

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

HTML Canvas 剪辑区域 - 上下文还原?

我试图在我的画布上设置一个“脏区”以防止重新绘制未移动的项目(背景图像、静态项目等),即只需要重新绘制移动玩家背后的背景

编辑:正如建议的那样,这是它的 jsfiddle http://jsfiddle.net/7kbzj/3/

“更新”方法在那里不起作用,所以它是 moveSprite(),您可以通过单击“移动精灵”链接来运行...基本上,每次单击时,剪切区域都应向右移动 10 像素。剪贴蒙版停留在初始位置,只发生重绘。奇怪的o_O

所以当我初始化我的画布时,一旦背景被绘制,设置我使用 ctx.save() 方法:

function init() {
    canvas = document.getElementById('kCanvas');
    ctx = canvas.getContext('2d');  

    ctx.fillStyle = "rgb(0,128,0)";
    ctx.fillRect (0,0,320,240);

    ctx.save();

    setInterval(function () { update(); }, tpf);
}
Run Code Online (Sandbox Code Playgroud)

为了看到剪裁的效果,我在我想剪裁的区域画了一个不同颜色的背景(蓝色的)......结果很糟糕,只有第一个剪裁的区域被涂成蓝色:(

function update() {
    setDirtyArea(x,y,w+1,h)

    ctx.fillStyle = "rgb(0,0,128)";
    ctx.fillRect (0,0,320,240);

    x++;

    // paint image
    ctx.clearRect(x,y,w,h);
    ctx.drawImage(imageObj, x, y);
Run Code Online (Sandbox Code Playgroud)

}

function setDirtyArea(x,y,w,h) {
   ctx.restore();   
   // define new dirty zone
   ctx.beginPath();
   ctx.rect(x, y, w, h);
   ctx.clip();
}
Run Code Online (Sandbox Code Playgroud)

我很想看到蓝色区域向屏幕右侧传播……请帮忙,我不明白出了什么问题!谢谢,J。

html canvas image clipping clip

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

C++初学者的编码错误:"未声明的标识符"?

我将C++用于我项目的一小部分.我必须编写错误的代码,但我对C++的了解就是它,我无法解决这个问题......

请参阅下面的AbstractContactListener.h和.mm文件.问题出在isFixtureCollidingWithFixtureOfType(...)方法中,我无法访问_contact向量.我在这里做错了什么?

标题:

struct JRContact {
    b2Fixture *fixtureA;
    b2Fixture *fixtureB;
    bool operator==(const JRContact& other) const
    {
        return (fixtureA == other.fixtureA) && (fixtureB == other.fixtureB);
    }
};

class AbstractContactListener : public b2ContactListener {

    id contactHandler;

public:
    std::vector<JRContact>_contacts;

    AbstractContactListener(id handler);
    ~AbstractContactListener();

    void isFixtureCollidingWithFixtureOfType(b2Fixture fix, int type);

    virtual void BeginContact(b2Contact* contact);
    virtual void EndContact(b2Contact* contact);
};
Run Code Online (Sandbox Code Playgroud)

执行:

AbstractContactListener::AbstractContactListener(id handler) : _contacts() {
    contactHandler = handler;
}

AbstractContactListener::~AbstractContactListener() {
}

void isFixtureCollidingWithFixtureOfType(b2Fixture fix, int type){

    std::vector<JRContact>::iterator ct;

    // Next line is faulty... can't call …
Run Code Online (Sandbox Code Playgroud)

c++ methods undeclared-identifier

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

jQuery UI中可拖动的原始位置?

当发生丢弃时,我需要恢复可拖动的原始位置:

$('.article').droppable( {

    drop: function(even, ui){

        // ui.draggable.???
    }
});
Run Code Online (Sandbox Code Playgroud)

由于我的draggable上有一个"revert:"无效的"属性",我认为原来的位置是存储在某个地方.我怎么能找到它?

谢谢,

jquery jquery-ui droppable jquery-ui-draggable

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

C++使用(void*)转换为int进行比较?

我(尝试)在ObjC项目中编写一些(工作)C++ :-) C++库(Box2D)为我提供了一个b2Fixture类,它具有"用户数据"属性,供编码人员存储与他们相关的内容.

在我的例子中,它只需要存储一个整数.从我在ObjC中的主程序,一个是将整数转换为void*:

headFixture->SetUserData( (void*) 10 );
Run Code Online (Sandbox Code Playgroud)

在程序的C++方面的实用程序方法中,我想将用户数据与给定的整数进行比较(即它们是常数,10 =实地,11 =平台等).

第一次比较使用(void*)拒绝编译.在SO上找到了一种不同的方法,如第二次比较所示,它使用*((intptr_t*)...).那个编译,但它发送EXC_BAD_ACCESS:

bool AbstractContactListener::contactContainsType(JRContact contact, int type){

    if (( type == ( (void *) contact.fixtureA->GetUserData() )) ||
        ( type == *( (intptr_t *) contact.fixtureB->GetUserData() ))
        ) {
        return true;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

我已经没有想法来解决这个问题了.请帮忙:-)谢谢!J.

编辑/解决方案:

bool AbstractContactListener::contactContainsType(JRContact contact, int type){

    if (( type == (intptr_t) contact.fixtureA->GetUserData() ) ||
        ( type == (intptr_t) contact.fixtureB->GetUserData() )
        ) {
        return true;
    };

    return false;
}
Run Code Online (Sandbox Code Playgroud)

这个对我有用!

c++ int casting objective-c void-pointers

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

jQuery:从结果列表中排除"this"

当拖动事件停止时,我必须找到我的div是否与任何其他节点发生冲突.因此,在"停止"事件中,我编写了一个循环,用于检查与相同类型的项目的冲突.

$('.article').draggable({

    stop: function(event, ui){

        $(".article").each(function (i) {

            if(this == ui.helper){
                return;
            }

            // Test collisions
        });         
    }
});
Run Code Online (Sandbox Code Playgroud)

现在,我找不到从循环中排除自己的方法.我期望这和ui.helper是一样的,但它们被认为是独立的元素.我该怎么做?

谢谢,

jquery

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

ObjC:将逻辑置于一个变量中,并将该变量排入一个数组......做白日梦?

我正在尝试将以下JS代码翻译成ObjC; 它基本上定义了一个函数并将其存储在一个数组中以便以后执行:

var logic = function() {
    me.removeNode(node);
}
this.queue.push(logic);
Run Code Online (Sandbox Code Playgroud)

我的ObjC端口包含方法:-(void)removeNode:(AbstractNode*)node我被卡住了...我想使用指定的"node"参数对此方法进行排队调用...

编辑:我正在阅读选择器.它仍然很模糊,但可能有所帮助.不知何故.或不?

它甚至可能,还是我需要找到一个解决方法:-)?谢谢!

解决这个问题归功于社区:

// Queue declaration
NSMutableArray *IRQ = [[NSMutableArray array] retain];

// Add logic to the queue for delayed execution:
[IRQ addObject:^{ NSLog(@"thanks for the help!"); } ];

// Call later
for (int i = 0; i < [IRQ count]; i++){
     void (^delayedCall)(void) = [IRQ objectAtIndex:i];
     delayedCall();
}
Run Code Online (Sandbox Code Playgroud)

queue function objective-c

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