Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OP08_1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
template admin
OP08_1
Commits
e4048d20
Commit
e4048d20
authored
Mar 16, 2021
by
范雪寒
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 新增onHomeworkFinish()方法
parent
0a424185
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
219 additions
and
10 deletions
+219
-10
Scene.js
play/assets/tmpGame/script/Scene.js
+0
-10
util.js
play/assets/tmpGame/script/util.js
+219
-0
No files found.
play/assets/tmpGame/script/Scene.js
View file @
e4048d20
// Learn cc.Class:
// - https://docs.cocos.com/creator/manual/en/scripting/class.html
// Learn Attribute:
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
cc
.
Class
({
extends
:
cc
.
Component
,
...
...
@@ -35,7 +26,6 @@ cc.Class({
_mapScaleMax
:
null
,
// 场景中常用缩放(取小值)
_cocosScale
:
null
,
// cocos 自缩放 (较少用到)
initSize
()
{
// 注意cc.winSize只有在适配后(修改fitHeight/fitWidth后)才能获取到正确的值,因此使用cc.getFrameSize()来获取初始的屏幕大小
let
screen_size
=
cc
.
view
.
getFrameSize
().
width
/
cc
.
view
.
getFrameSize
().
height
let
design_size
=
cc
.
Canvas
.
instance
.
designResolution
.
width
/
cc
.
Canvas
.
instance
.
designResolution
.
height
...
...
play/assets/tmpGame/script/util.js
View file @
e4048d20
...
...
@@ -131,4 +131,223 @@ export function btnClickAnima(btn, time=0.15, rate=1.05) {
.
to
(
time
/
2
,
{
scale
:
btn
.
tmpScale
})
.
start
()
})
}
export
function
getSpriteFrimeByUrl
(
url
,
cb
)
{
cc
.
loader
.
load
({
url
},
(
err
,
img
)
=>
{
const
spriteFrame
=
new
cc
.
SpriteFrame
(
img
)
if
(
cb
)
{
cb
(
spriteFrame
);
}
})
}
export
function
getSprNode
(
resName
)
{
const
sf
=
cc
.
find
(
'
Canvas/res/img/
'
+
resName
).
getComponent
(
cc
.
Sprite
).
spriteFrame
;
const
node
=
new
cc
.
Node
();
node
.
addComponent
(
cc
.
Sprite
).
spriteFrame
=
sf
;
return
node
;
}
export
function
getSprNodeByUrl
(
url
,
cb
)
{
const
node
=
new
cc
.
Node
();
const
spr
=
node
.
addComponent
(
cc
.
Sprite
);
getSpriteFrimeByUrl
(
url
,
(
sf
)
=>
{
spr
.
spriteFrame
=
sf
;
if
(
cb
)
{
cb
(
spr
);
}
})
}
export
function
playAudio
(
audioClip
,
cb
=
null
)
{
if
(
audioClip
)
{
const
audioId
=
cc
.
audioEngine
.
playEffect
(
audioClip
,
false
,
0.8
);
if
(
cb
)
{
cc
.
audioEngine
.
setFinishCallback
(
audioId
,
()
=>
{
cb
();
});
}
}
}
export
async
function
asyncDelay
(
time
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
try
{
setTimeout
(()
=>
{
resolve
();
},
time
*
1000
);
}
catch
(
e
)
{
reject
(
e
);
}
})
}
export
class
FireworkSettings
{
baseNode
;
// 父节点
nodeList
;
// 火花节点的array
pos
;
// 发射点
side
;
// 发射方向
range
;
// 扩散范围
number
;
// 发射数量
scalseRange
;
// 缩放范围
constructor
(
baseNode
,
nodeList
,
pos
=
cc
.
v2
(
0
,
0
),
side
=
cc
.
v2
(
0
,
100
),
range
=
50
,
number
=
100
,
scalseRange
=
0
)
{
this
.
baseNode
=
baseNode
;
this
.
nodeList
=
nodeList
;
this
.
pos
=
pos
;
this
.
side
=
side
;
this
.
range
=
range
;
this
.
number
=
number
;
this
.
scalseRange
=
scalseRange
;
}
static
copy
(
firework
)
{
return
new
FireworkSettings
(
firework
.
baseNode
,
firework
.
nodeList
,
firework
.
pos
,
firework
.
side
,
firework
.
range
,
firework
.
number
,
);
}
}
export
async
function
showFireworks
(
fireworkSettings
)
{
const
{
baseNode
,
nodeList
,
pos
,
side
,
range
,
number
,
scalseRange
}
=
fireworkSettings
;
new
Array
(
number
).
fill
(
'
'
).
forEach
(
async
(
_
,
i
)
=>
{
let
rabbonNode
=
new
cc
.
Node
();
rabbonNode
.
parent
=
baseNode
;
rabbonNode
.
x
=
pos
.
x
;
rabbonNode
.
y
=
pos
.
y
;
rabbonNode
.
angle
=
60
*
Math
.
random
()
-
30
;
let
node
=
cc
.
instantiate
(
nodeList
[
RandomInt
(
nodeList
.
length
)]);
node
.
parent
=
rabbonNode
;
node
.
active
=
true
;
node
.
x
=
0
;
node
.
y
=
0
;
node
.
angle
=
0
;
node
.
scale
=
(
Math
.
random
()
-
0.5
)
*
scalseRange
+
1
;
const
rate
=
Math
.
random
();
const
angle
=
Math
.
PI
*
(
Math
.
random
()
*
2
-
1
);
await
asyncTweenBy
(
rabbonNode
,
0.3
,
{
x
:
side
.
x
*
rate
+
Math
.
cos
(
angle
)
*
range
*
rate
,
y
:
side
.
y
*
rate
+
Math
.
sin
(
angle
)
*
range
*
rate
},
{
easing
:
'
quadIn
'
});
cc
.
tween
(
rabbonNode
)
.
by
(
8
,
{
y
:
-
2000
})
.
start
();
cc
.
tween
(
rabbonNode
)
.
to
(
5
,
{
scale
:
(
Math
.
random
()
-
0.5
)
*
scalseRange
+
1
})
.
start
();
rabbonFall
(
rabbonNode
);
await
asyncDelay
(
Math
.
random
());
cc
.
tween
(
node
)
.
by
(
0.15
,
{
x
:
-
10
,
angle
:
-
10
})
.
by
(
0.3
,
{
x
:
20
,
angle
:
20
})
.
by
(
0.15
,
{
x
:
-
10
,
angle
:
-
10
})
.
union
()
.
repeatForever
()
.
start
();
cc
.
tween
(
rabbonNode
)
.
delay
(
5
)
.
to
(
0.3
,
{
opacity
:
0
})
.
call
(()
=>
{
node
.
stopAllActions
();
node
.
active
=
false
;
node
.
parent
=
null
;
node
=
null
;
})
.
start
();
});
}
async
function
rabbonFall
(
node
)
{
const
time
=
1
+
Math
.
random
();
const
offsetX
=
RandomInt
(
-
200
,
200
)
*
time
;
await
asyncTweenBy
(
node
,
time
,
{
x
:
offsetX
,
angle
:
offsetX
*
60
/
200
});
rabbonFall
(
node
);
}
export
async
function
asyncTweenTo
(
node
,
duration
,
obj
,
ease
=
undefined
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
try
{
cc
.
tween
(
node
)
.
to
(
duration
,
obj
,
ease
)
.
call
(()
=>
{
resolve
();
})
.
start
();
}
catch
(
e
)
{
reject
(
e
);
}
});
}
export
async
function
asyncTweenBy
(
node
,
duration
,
obj
,
ease
=
undefined
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
try
{
cc
.
tween
(
node
)
.
by
(
duration
,
obj
,
ease
)
.
call
(()
=>
{
resolve
();
})
.
start
();
}
catch
(
e
)
{
reject
(
e
);
}
});
}
export
function
showTrebleFirework
(
baseNode
,
rabbonList
)
{
const
middle
=
new
FireworkSettings
(
baseNode
,
rabbonList
);
middle
.
pos
=
cc
.
v2
(
0
,
-
400
);
middle
.
side
=
cc
.
v2
(
0
,
1000
);
middle
.
range
=
200
;
middle
.
number
=
100
;
middle
.
scalseRange
=
0.4
;
const
left
=
FireworkSettings
.
copy
(
middle
);
left
.
pos
=
cc
.
v2
(
-
600
,
-
400
);
left
.
side
=
cc
.
v2
(
200
,
1000
);
const
right
=
FireworkSettings
.
copy
(
middle
);
right
.
pos
=
cc
.
v2
(
600
,
-
400
);
right
.
side
=
cc
.
v2
(
-
200
,
1000
);
showFireworks
(
middle
);
showFireworks
(
left
);
showFireworks
(
right
);
}
export
function
onHomeworkFinish
()
{
const
middleLayer
=
cc
.
find
(
'
middleLayer
'
);
if
(
middleLayer
)
{
const
middleLayerComponent
=
middleLayer
.
getComponent
(
'
middleLayer
'
);
if
(
middleLayerComponent
.
role
==
'
student
'
)
{
middleLayerComponent
.
onHomeworkFinish
(()
=>
{
});
}
return
;
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment