# cardjs
**Repository Path**: maojiawei/cardjs
## Basic Information
- **Project Name**: cardjs
- **Description**: card.js是一款绘制游戏王卡图的工具
- **Primary Language**: JavaScript
- **License**: AFL-3.0
- **Default Branch**: master
- **Homepage**: https://ymssx.gitee.io/ygo
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 42
- **Created**: 2020-04-09
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# card.js
这是一个游戏王卡片渲染工具,你只需要在你的网站引入card.js,就可以轻松地渲染出标准的游戏王卡图!
## demo
[在线演示demo](https://ymssx.gitee.io/ygo)
## 使用方式
#### ES Module
`import Card from './card.js'`
#### javascript
`let card = new Card({ cardData, canvas, size })`
> cardData -- 卡片信息,包括名字、密码、效果等
例如
```javascript
let cardData = {
name: '青眼的白龍',
_id: '89631139',
type: 'monster',
type2: 'tc',
type3: '',
type4: '',
attack: 3000,
defend: 2500,
level: 8,
desc: '以高攻擊力著稱的傳說之龍。任何對手都能被粉碎,其破壞力不可估量。',
race: '龍族',
attribute: 'light'
}
```
> canvas -- canvas对象
## 生命周期
通过传入事件来自定义卡片渲染的生命周期钩子函数
> fontLoaded
>> 单个字体文件加载完成
> fontsLoaded
>> 所有字体文件加载完成
> imageLoaded
>> 单个图片资源加载完成
> imagesLoaded
>> 单个图片资源加载完成
> loaded
>> 卡片渲染完毕
## 扩展
```javascript
const Card = function ({
dbData, // 卡片数据 - object
canvas, // canvas对象 - dom
size = [813, 1185], // 绘制尺寸,[宽, 高] - array
lang = 'cn', // 语言 cn、jp、en - string
config = defaultConfig, // 配置信息 - object
fastFont = true, // 精简字体 - boolean
fontLoaded = defaultEvent, // 事件 - function
imageLoaded = defaultEvent,
fontsLoaded = defaultEvent,
imagesLoaded = defaultEvent,
loaded = defaultEvent,
recover = false, // 是否缓存配置与数据 - boolean
holo = true, // 是否显示防伪标志 - boolean
cardbagSwitch = false, // 是否显示卡包信息 - boolean
translate = false // 是否自动繁简转换 - boolean
})
```
#### config
更改config文件,可以自由地调整卡片的样式,具体配置请参考`config/defaultConfig.js`
`card.changeConfig(config)`
### API
> Card.changeConfig
`card.changeConfig(config)`
> Card.feedData
调整卡片信息
`card.feedData(cardData)`
或者直接
card.cardData.name = 'Blue Eyes'
> Card.save
保存卡图
## 实现方式
Card.js
> cardData.js
>> 管理卡片数据,监听数据变动,当数据更新之后,cardData会自动分析需要更新哪些文件,然后告知fileManage
> fileManage.js
>> 管理文件的更新与缓存,当收到cardData的更新请求后,会自动从缓存或者网络调用图片,在文件更新之后会自动告知cardDrawer
> cardDrawer.js
>> 管理绘图功能,在收到fileManage的绘图请求后,会按照cardData的数据以及fileManage提供的文件进行绘图