2020-08-04 13:15:02 +08:00
# include "BasicsScene.h"
# include "Window1.h"
# include "Window2.h"
2022-07-11 17:50:21 +08:00
USING_NS_AX ;
2020-08-04 13:15:02 +08:00
void BasicsScene : : continueInit ( )
{
UIConfig : : buttonSound = " ui://Basics/click " ;
UIConfig : : verticalScrollBar = " ui://Basics/ScrollBar_VT " ;
UIConfig : : horizontalScrollBar = " ui://Basics/ScrollBar_HZ " ;
UIConfig : : tooltipsWin = " ui://Basics/WindowFrame " ;
UIConfig : : popupMenu = " ui://Basics/PopupMenu " ;
UIPackage : : addPackage ( " UI/Basics " ) ;
_view = UIPackage : : createObject ( " Basics " , " Main " ) - > as < GComponent > ( ) ;
_groot - > addChild ( _view ) ;
_backBtn = _view - > getChild ( " btn_Back " ) ;
_backBtn - > setVisible ( false ) ;
2022-07-15 19:17:01 +08:00
_backBtn - > addClickListener ( AX_CALLBACK_1 ( BasicsScene : : onClickBack , this ) ) ;
2020-08-04 13:15:02 +08:00
_demoContainer = _view - > getChild ( " container " ) - > as < GComponent > ( ) ;
_cc = _view - > getController ( " c1 " ) ;
int cnt = _view - > numChildren ( ) ;
for ( int i = 0 ; i < cnt ; i + + )
{
GObject * obj = _view - > getChildAt ( i ) ;
if ( obj - > getGroup ( ) ! = nullptr & & obj - > getGroup ( ) - > name . compare ( " btns " ) = = 0 )
2022-07-15 19:17:01 +08:00
obj - > addClickListener ( AX_CALLBACK_1 ( BasicsScene : : runDemo , this ) ) ;
2020-08-04 13:15:02 +08:00
}
}
BasicsScene : : BasicsScene ( )
: _winA ( nullptr ) ,
_winB ( nullptr ) ,
_pm ( nullptr ) ,
_popupCom ( nullptr )
{
}
BasicsScene : : ~ BasicsScene ( )
{
2022-07-15 19:17:01 +08:00
AX_SAFE_RELEASE ( _winA ) ;
AX_SAFE_RELEASE ( _winB ) ;
AX_SAFE_RELEASE ( _pm ) ;
AX_SAFE_RELEASE ( _popupCom ) ;
2020-08-04 13:15:02 +08:00
}
void BasicsScene : : onClickBack ( EventContext * context )
{
_cc - > setSelectedIndex ( 0 ) ;
_backBtn - > setVisible ( false ) ;
}
void BasicsScene : : runDemo ( EventContext * context )
{
std : : string type = ( ( GObject * ) context - > getSender ( ) ) - > name . substr ( 4 ) ;
auto it = _demoObjects . find ( type ) ;
GComponent * obj ;
if ( it = = _demoObjects . end ( ) )
{
obj = UIPackage : : createObject ( " Basics " , " Demo_ " + type ) - > as < GComponent > ( ) ;
_demoObjects . insert ( type , obj ) ;
}
else
obj = it - > second ;
_demoContainer - > removeChildren ( ) ;
_demoContainer - > addChild ( obj ) ;
_cc - > setSelectedIndex ( 1 ) ;
_backBtn - > setVisible ( true ) ;
if ( type = = " Text " )
playText ( ) ;
else if ( type = = " Depth " )
playDepth ( ) ;
else if ( type = = " Window " )
playWindow ( ) ;
else if ( type = = " Drag&Drop " )
playDragDrop ( ) ;
else if ( type = = " Popup " )
playPopup ( ) ;
else if ( type = = " ProgressBar " )
playProgress ( ) ;
}
void BasicsScene : : playText ( )
{
GComponent * obj = _demoObjects . at ( " Text " ) ;
obj - > getChild ( " n12 " ) - > addEventListener ( UIEventType : : ClickLink , [ this ] ( EventContext * context ) {
GRichTextField * t = dynamic_cast < GRichTextField * > ( context - > getSender ( ) ) ;
t - > setText ( " [img]ui://Basics/pet[/img][color=#FF0000]You click the link[/color]: " + context - > getDataValue ( ) . asString ( ) ) ;
} ) ;
obj - > getChild ( " n25 " ) - > addClickListener ( [ this , obj ] ( EventContext * context ) {
obj - > getChild ( " n24 " ) - > setText ( obj - > getChild ( " n22 " ) - > getText ( ) ) ;
} ) ;
}
void BasicsScene : : playPopup ( )
{
if ( _pm = = nullptr )
{
_pm = PopupMenu : : create ( ) ;
_pm - > retain ( ) ;
2022-07-15 19:17:01 +08:00
_pm - > addItem ( " Item 1 " , AX_CALLBACK_1 ( BasicsScene : : onClickMenu , this ) ) ;
_pm - > addItem ( " Item 2 " , AX_CALLBACK_1 ( BasicsScene : : onClickMenu , this ) ) ;
_pm - > addItem ( " Item 3 " , AX_CALLBACK_1 ( BasicsScene : : onClickMenu , this ) ) ;
_pm - > addItem ( " Item 4 " , AX_CALLBACK_1 ( BasicsScene : : onClickMenu , this ) ) ;
2020-08-04 13:15:02 +08:00
}
if ( _popupCom = = nullptr )
{
_popupCom = UIPackage : : createObject ( " Basics " , " Component12 " ) - > as < GComponent > ( ) ;
_popupCom - > retain ( ) ;
_popupCom - > center ( ) ;
}
GComponent * obj = _demoObjects . at ( " Popup " ) ;
obj - > getChild ( " n0 " ) - > addClickListener ( [ this ] ( EventContext * context ) {
_pm - > show ( ( GObject * ) context - > getSender ( ) , PopupDirection : : DOWN ) ;
} ) ;
obj - > getChild ( " n1 " ) - > addClickListener ( [ this ] ( EventContext * context ) {
UIRoot - > showPopup ( _popupCom ) ;
} ) ;
obj - > addEventListener ( UIEventType : : RightClick , [ this ] ( EventContext * context ) {
_pm - > show ( ) ;
} ) ;
}
void BasicsScene : : onClickMenu ( EventContext * context )
{
GObject * itemObject = ( GObject * ) context - > getData ( ) ;
2022-07-16 10:43:05 +08:00
AXLOG ( " click %s " , itemObject - > getText ( ) . c_str ( ) ) ;
2020-08-04 13:15:02 +08:00
}
void BasicsScene : : playWindow ( )
{
GComponent * obj = _demoObjects . at ( " Window " ) ;
if ( _winA = = nullptr )
{
_winA = Window1 : : create ( ) ;
_winA - > retain ( ) ;
_winB = Window2 : : create ( ) ;
_winB - > retain ( ) ;
obj - > getChild ( " n0 " ) - > addClickListener ( [ this ] ( EventContext * ) {
_winA - > show ( ) ;
} ) ;
obj - > getChild ( " n1 " ) - > addClickListener ( [ this ] ( EventContext * ) {
_winB - > show ( ) ;
} ) ;
}
}
Vec2 startPos ;
void BasicsScene : : playDepth ( )
{
GComponent * obj = _demoObjects . at ( " Depth " ) ;
GComponent * testContainer = obj - > getChild ( " n22 " ) - > as < GComponent > ( ) ;
GObject * fixedObj = testContainer - > getChild ( " n0 " ) ;
fixedObj - > setSortingOrder ( 100 ) ;
fixedObj - > setDraggable ( true ) ;
int numChildren = testContainer - > numChildren ( ) ;
int i = 0 ;
while ( i < numChildren )
{
GObject * child = testContainer - > getChildAt ( i ) ;
if ( child ! = fixedObj )
{
testContainer - > removeChildAt ( i ) ;
numChildren - - ;
}
else
i + + ;
}
startPos = fixedObj - > getPosition ( ) ;
obj - > getChild ( " btn0 " ) - > addClickListener ( [ obj ] ( EventContext * ) {
GGraph * graph = GGraph : : create ( ) ;
startPos . x + = 10 ;
startPos . y + = 10 ;
graph - > setPosition ( startPos . x , startPos . y ) ;
graph - > drawRect ( 150 , 150 , 1 , Color4F : : BLACK , Color4F : : RED ) ;
obj - > getChild ( " n22 " ) - > as < GComponent > ( ) - > addChild ( graph ) ;
} ,
EventTag ( this ) ) ; //avoid duplicate register
obj - > getChild ( " btn1 " ) - > addClickListener ( [ obj ] ( EventContext * ) {
GGraph * graph = GGraph : : create ( ) ;
startPos . x + = 10 ;
startPos . y + = 10 ;
graph - > setPosition ( startPos . x , startPos . y ) ;
graph - > drawRect ( 150 , 150 , 1 , Color4F : : BLACK , Color4F : : GREEN ) ;
graph - > setSortingOrder ( 200 ) ;
obj - > getChild ( " n22 " ) - > as < GComponent > ( ) - > addChild ( graph ) ;
} ,
EventTag ( this ) ) ;
}
void BasicsScene : : playDragDrop ( )
{
GComponent * obj = _demoObjects . at ( " Drag&Drop " ) ;
obj - > getChild ( " a " ) - > setDraggable ( true ) ;
GButton * b = obj - > getChild ( " b " ) - > as < GButton > ( ) ;
b - > setDraggable ( true ) ;
b - > addEventListener ( UIEventType : : DragStart , [ b ] ( EventContext * context ) {
//Cancel the original dragging, and start a new one with a agent.
context - > preventDefault ( ) ;
DragDropManager : : getInstance ( ) - > startDrag ( b - > getIcon ( ) , Value ( b - > getIcon ( ) ) , context - > getInput ( ) - > getTouchId ( ) ) ;
} ) ;
GButton * c = obj - > getChild ( " c " ) - > as < GButton > ( ) ;
c - > setIcon ( " " ) ;
c - > addEventListener ( UIEventType : : Drop , [ c ] ( EventContext * context ) {
c - > setIcon ( context - > getDataValue ( ) . asString ( ) ) ;
} ) ;
GObject * bounds = obj - > getChild ( " n7 " ) ;
Rect rect = bounds - > transformRect ( Rect ( Vec2 : : ZERO , bounds - > getSize ( ) ) , _groot ) ;
//---!!Because at this time the container is on the right side of the stage and beginning to move to left(transition), so we need to caculate the final position
rect . origin . x - = obj - > getParent ( ) - > getX ( ) ;
//----
GButton * d = obj - > getChild ( " d " ) - > as < GButton > ( ) ;
d - > setDraggable ( true ) ;
d - > setDragBounds ( rect ) ;
}
void BasicsScene : : playProgress ( )
{
GComponent * obj = _demoObjects . at ( " ProgressBar " ) ;
2022-10-18 19:17:36 +08:00
ax : : Director : : getInstance ( ) - > getScheduler ( ) - > schedule (
2022-07-15 19:17:01 +08:00
AX_SCHEDULE_SELECTOR ( BasicsScene : : onPlayProgress ) , this , 0.02f , false ) ;
2020-08-04 13:15:02 +08:00
obj - > addEventListener ( UIEventType : : Exit , [ this ] ( EventContext * ) {
2022-10-18 19:17:36 +08:00
ax : : Director : : getInstance ( ) - > getScheduler ( ) - > unschedule ( AX_SCHEDULE_SELECTOR ( BasicsScene : : onPlayProgress ) , this ) ;
2020-08-04 13:15:02 +08:00
} ) ;
}
void BasicsScene : : onPlayProgress ( float dt )
{
GComponent * obj = _demoObjects . at ( " ProgressBar " ) ;
int cnt = obj - > numChildren ( ) ;
for ( int i = 0 ; i < cnt ; i + + )
{
GProgressBar * child = obj - > getChildAt ( i ) - > as < GProgressBar > ( ) ;
if ( child ! = nullptr )
{
child - > setValue ( child - > getValue ( ) + 1 ) ;
if ( child - > getValue ( ) > child - > getMax ( ) )
child - > setValue ( child - > getMin ( ) ) ;
}
}
}