设置大小:修改器与表面

时间:2014-09-13 22:26:39

标签: javascript famo.us

设置修改器的大小与设置表面本身的大小有什么区别?

据我了解,根据添加的改性剂的组成,将单个表面布置。 (状态)修饰符只与位置有关而不是大小吗?

为什么下面的代码不能将曲面大小限制为50x50而不是渲染100x100平方? (何时在修改器上设置大小是合适的?)

var stateModifier = new StateModifier({
  size: [50, 50],
  transform: Transform.translate(50, 100, 0)
});

var surface = new Surface({
  size: [100, 100],
  properties: {
     backgroundColor: '#FA5C4F'
  }
});

mainContext.add(stateModifier).add(surface);

谢谢,

JD

http://famo.us/university/lessons/#/famous-101/positioning/2

1 个答案:

答案 0 :(得分:1)

简单地说,当你设置一个大小时,表面会有一个态度,它会告诉修饰符吻它的屁股。使曲面尊重修饰符的唯一方法是将大小设置为[undefined,undefined](或者只是未定义),因为它将使用修饰符的大小。

基本上,引擎获取修改器提供的大小,并将其设置为以下要渲染的组件的当前大小。但是,您的曲面定义了一个新尺寸,因此引擎将使用该尺寸,但仅适用于该曲面。

TLDR:要限制,不要给表面一个大小

var Engine = require('famous/core/Engine');
var Surface = require('famous/core/Surface');
var Transform = require('famous/core/Transform');
var StateModifier = require('famous/modifiers/StateModifier');

var mainContext = Engine.createContext();

var stateModifier = new StateModifier({
  size: [100, 100],
  transform: Transform.translate(150, 100, 0)
});

var surface = new Surface({
  properties: {
    backgroundColor: '#FA5C4F'
  }
});

mainContext.add(stateModifier).add(surface);

在这种情况下,这将输出完全相同的内容,但如果您为修改器添加更多子项,它们也会受到大小的影响。