avg-core-ts
Version:
Develop Adventure Game (or ADV, Visual Novel, Galgame, etc.) on your own!
50 lines (41 loc) • 1.36 kB
JSX
/**
* @file General image component
* @author MicroMatrix <yangpan.1985@bytedance.com>
* @copyright 2012-2020 bytedance
* @link git@code.byted.org:yangpan.1985/avg.git
*/
import React from 'react';
import PropTypes from 'prop-types';
import createComponent from 'components/createComponent';
import ContainerMixin from 'components/ContainerMixin';
import NodeMixin from 'components/NodeMixin';
import Sprite from 'classes/Sprite';
import pixiPropTypes from './pixi/propTypes';
import { mountNode, updateNode, setValue, updateValue } from './pixi/properties';
const RawImage = createComponent('RawImage', ContainerMixin, NodeMixin, {
createNode() {
this.node = new Sprite();
},
mountNode(props) {
const node = this.node;
setValue.call(node, 'rectangle', props.rectangle);
mountNode(node, props);
return node;
},
updateNode(prevProps, props) {
const node = this.node;
updateValue.call(node, 'rectangle', prevProps.rectangle, props.rectangle);
updateNode(node, prevProps, props);
},
});
export class Image extends React.PureComponent {
static propTypes = {
file: PropTypes.string,
dataUri: PropTypes.string,
rect: PropTypes.arrayOf(PropTypes.number),
...pixiPropTypes,
};
render() {
return React.createElement(RawImage, this.props, this.props.children);
}
}