设置修改器的大小与设置表面本身的大小有什么区别?
据我了解,根据添加的改性剂的组成,将单个表面布置。 (状态)修饰符只与位置有关而不是大小吗?
为什么下面的代码不能将曲面大小限制为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
答案 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);
在这种情况下,这将输出完全相同的内容,但如果您为修改器添加更多子项,它们也会受到大小的影响。