func NewTestScene(controller *TestController) *TestScene {
	testScene := &TestScene{
		Scene:      cc.NewScene(),
		controller: controller,
	}

	label := cc.NewLabelTTF("Main Menu", "Arial", 20)
	menuItem := cc.NewMenuItemLabelAllArgs(label, testScene.OnMainMenuCallback, testScene.Scene)
	menuItem.SetPosition(cc.NewPoint(cc.WinSize().Width()-50, 25))

	menu := cc.NewMenu(menuItem)
	menu.SetPosition(cc.NewPoint(0, 0))

	testScene.Scene.AddChildWithOrder(menu, 1)

	return testScene
}
Example #2
0
func NewHelloWorldLayer() cc.Layer {
	layer := &helloworldLayer{Layer: cc.NewLayer(), sprite: nil}

	size := cc.WinSize()

	closeNormal := resouces["CloseNormal_png"].(string)
	closeSelected := resouces["CloseSelected_png"].(string)
	closeCallback := func(_ cc.Node) {
		cc.Log("Menu is clicked!")
	}

	closeItem := cc.NewMenuItemImageAllArgs(
		&closeNormal,
		&closeSelected,
		nil,
		&closeCallback,
		layer.Layer)

	closeItem.Attr(map[string]interface{}{
		"x":       size.Width() - 20,
		"y":       20,
		"anchorX": 0.5,
		"anchorY": 0.5,
	})

	menu := cc.NewMenu(closeItem)
	//menu.SetPosition(cc.NewPoint(0, 0)) works too
	menu.SetPositionX(0)
	menu.SetPositionY(0)
	layer.AddChildWithOrder(menu, 1)

	//helloLabel := js.Global.Get("cc").Get("LabelTTF").New("Hello World", "Arial", 38)
	helloLabel := cc.NewLabelTTF("Hello World", "Arial", 38)

	// position the label on the center of the screen
	helloLabel.SetPosition(cc.NewPoint(size.Width()/2, 0))

	// add the label as a child to this layer
	layer.AddChildWithOrder(helloLabel, 5)

	// add "HelloWorld" splash screen"
	layer.sprite = cc.NewSprite(resouces["HelloWorld_png"].(string))
	layer.sprite.Attr(map[string]interface{}{
		"x":        size.Width() / 2,
		"y":        size.Height() / 2,
		"scale":    0.5,
		"rotation": 180,
	})
	layer.AddChildWithOrder(layer.sprite, 0)

	layer.sprite.RunAction(
		cc.NewSequence(
			cc.NewRotateTo(2, 0, 0),
			cc.NewScaleTo(2, 1, 1),
		),
	)

	helloLabel.RunAction(
		cc.NewSpawn(
			cc.NewMoveBy(2.5, cc.NewPoint(0, size.Height()-40)),
			cc.NewTintTo(2.5, 255, 125, 0),
		),
	)

	return layer.Layer
}
func NewTestController(testNames []Test, resources map[string]interface{}) *TestController {
	testController := &TestController{
		Layer: cc.NewLayerGradient(
			cc.NewColor(0, 0, 0, 255),
			cc.NewColor(0x46, 0x82, 0xB4, 255),
		),
		itemMenu:                nil,
		beginPos:                0,
		isMouseDown:             false,
		autoTestEnabled:         false,
		autoTestCurrentTestName: "N/A",
		curPos:                  cc.NewPoint(0, 0),
		yOffset:                 0,
		testNames:               testNames,
		resources:               resources,
	}

	//OnEnter
	testController.Layer.SetOnEnter(func() {
		testController.Layer.OnEnterSuper()
		testController.itemMenu.SetPositionX(testController.yOffset)
	})

	//globals
	director := cc.Director()
	winSize := director.GetWinSize()

	//add close menu
	closeItem := cc.NewMenuItemImage(
		resources["CloseNormal_png"].(string),
		resources["CloseSelected_png"].(string),
		func() {
			location := js.Global.Get("location")
			if location != nil {
				location.Call("replace", "http://www.google.com")
			} else {
				cc.Log("No location found, cannot close")
			}
		},
		testController.Layer)
	closeItem.SetPositionX(winSize.Width() - 30)
	closeItem.SetPositionY(winSize.Height() - 30)

	subItem1 := cc.NewMenuItemFontWithString("Automated Test: Off")
	subItem1.SetFontSize(18)
	subItem2 := cc.NewMenuItemFontWithString("Automated Test: On")
	subItem2.SetFontSize(18)

	toggleAutoTestItem := cc.NewMenuItemToggle(subItem1, subItem2)
	toggleAutoTestItem.SetCallback(testController.OnToggleAutoTest, testController.Layer)
	toggleAutoTestItem.SetPositionX(winSize.Width() - toggleAutoTestItem.GetWidth()/2 - 10)
	toggleAutoTestItem.SetPositionY(20)
	if testController.autoTestEnabled {
		toggleAutoTestItem.SetSelectedIndex(1)
	}

	menu := cc.NewMenu(closeItem, toggleAutoTestItem)
	menu.SetPositionX(0)
	menu.SetPositionY(0)

	// add menu items for tests
	testController.itemMenu = cc.NewMenu()

	//Add items for tests
	for i, testCase := range testNames {
		label := cc.NewLabelTTF(testCase.Title, "Arial", 24)
		menuItem := cc.NewMenuItemLabel(label, testController.OnMenuCallback, testController.Layer)
		testController.itemMenu.AddChildWithOrder(menuItem, i+10000)
		menuItem.SetPositionX(winSize.Width() / 2)
		menuItem.SetPositionY(winSize.Height() - (i+1)*lineSpace)
		menuItem.SetEnabled(true)
	}

	testController.itemMenu.SetWidth(winSize.Width())
	testController.itemMenu.SetHeight(1 * lineSpace)
	testController.itemMenu.SetPositionX(testController.curPos.X())
	testController.itemMenu.SetPositionY(testController.curPos.Y())
	testController.Layer.AddChild(testController.itemMenu)
	testController.Layer.AddChildWithOrder(menu, 1)

	return testController
}