1. Ao carregar pela primeira vez, a imagem definida (Raster)
não é exibida, mas está tudo bem após a atualização?
分析:给图片设置bounds时图片资源还没有加载完成,第二次刷新的时候浏览器有缓存了,所以加载成功。
解决方法:在onLoad中设置尺寸。
let mapBg = new paper.Raster({
//背景图
source: require('@/YDCLOUD/assets/img/newMapManage/mapbg.jpg'),
});
mapBg.onLoad = () => {
mapBg.bounds = this.myPaper.view.bounds;
};
2. Quando a imagem é definida para um tamanho fixo, ela piscará por um tempo (o tamanho original será exibido primeiro e, em seguida, o tamanho que você deseja definir será exibido)
train.onLoad = () => {
train.rotate(roate)
train.setSize([1.5 * height, height]);
train.bounds.x = x - 1.5 * height
train.bounds.y = y - 0.25 * height
}
train.setSize([2.26 * height, height]);
// train.selected = true
train.bounds.x = x - 1.5 * height
train.bounds.y = y - 0.25 * height
Não apenas configure-o como onLaod, mas também configure-o quando estiver definido, para que não pisque.
2. Como fazer com que a linha central da imagem fique em um determinado ponto que desejo definir?
设置他的position
let bottomR = new paper.Raster({
source: require(`地址`),
position: [x, y]
});
let size = type == 'bottom' ? [30, 30] : [50, 50]
bottomR.onLoad = () => {
bottomR.setSize(size);
bottomR.position = [x, y]//让中点位于(x,y)坐标
}
3. Quer que os elementos sejam animados juntos?
将元素放在一个group或者layer中,给group或者layer设置动画。
4. A animação trava e a taxa de quadros do onFrame é reduzida.
元素过多,动画会重绘,导致卡顿
创建多个 PaperScope 将需要动画的元素尽可能的剥离放在一个单独的PaperScope中
所有新创建的项目会自动添加为当前激活的层的子元素,通过project.activeLayer访问活跃的层
this.bottommyPaper = new paper.PaperScope()
this.myPaper = new paper.PaperScope()
this.bottommyPaper.setup(this.$refs.myCanvas);
this.myPaper.setup(this.$refs.myCanvas2);
//通过activate更改当前活跃的图层 paperjs只能由一个活跃的图层
this.bottommyPaper.activate()
let bgG = new paper.Group([]); //包括背景图
//通过 project.activeLayer 获取当前活跃的层
this.bottommyPaper.project.activeLayer.addChild(bgG)
-
Usar o tamanho da resolução da imagem de fundo é muito maior que a tela atual
在我的项目中用了很多图片,调试用的分辨率是1920*1080,而图片分辨率为 14000 在加载多个大分辨率图片就出现了卡顿的问题,将图片改为1920*1080的图片,卡顿的问题就解决了。
4. Deixar a imagem de fundo preencher o contêiner?
-
quero manter a proporção
fitBounds(Rectangle,true/false) 第二个参数默认false (其边界适合指定的矩形,而不改变其纵横比)
fitBounds está definido como verdadeiro:
fitBounds está definido como falso:
-
Eu quero ser capaz de esticar e encher
设置他的bouds和容器的bouds一样大,会拉伸
O uso específico é o seguinte:
//设置铺满的图片的公用方法
setfullImage(src) {
let img = new paper.Raster({
source: require(`@/YDCLOUD/assets/img/newMapManage/${
src}.png`),
});
img.onLoad = () => {
img.bounds = this.myPaper.view.bounds;
}
img.bounds = this.myPaper.view.bounds;
return img
},
5. redimensionar