class Test
{
var number : int;
var innerTestA : InnerTest;
var innerTestB : InnerTest;
function Test()
{
number = 2;
innerTestA = new ClassA(1);//<<Instantiation
innerTestB = new ClassB(-1);//<<Instantiation
}
function activation(b : boolean)
{
if (b)
{
innerTestA.activate();
}
else
{
innerTestB.activate();
}
}
class InnerTest
{
var adjust : int;
function InnerTest(a : int)
{
adjust = a;
}
function activate()
{
}
}
class ClassA extends InnerTest
{
function ClassA(a : int)
{
super(a);
}
function activate()
{
number = number + adjust;
}
}
class ClassB extends InnerTest
{
function ClassB(a : int)
{
super(a);
}
function activate()
{
number = 0;
}
}
}
Gives the error:
Assets/Test.js(20,32): BCE0020: An instance of type ‘Test’ is required to access non static member ‘number’.
There are several ways you can do this. One way is to scratch the whole “inner class” thing and instead have something like this:
class Test
{
var number : int;
var innerTest : InnerTest;
function Test()
{
number = 2;
innerTest = new InnerTest();
}
var InnerTest = function()
{
var InnerTest = function() {}
var getNumber = function()
{
return number;
}
}
}
var test = new Test();
var someNumber = test.innerTest.getNumber();
This is a bit confusing because here we are making an instance of a function, which is Javascripts version of “objects”.
Your other option is to have a variable in InnerTest that references the outer class:
class Test
{
var number : int;
var innerTest : InnerTest;
function Test()
{
number = 2;
innerTest = new InnerTest();
}
class InnerTest
{
var outerClass : Test;
varr InnerTest = function(newOuterClass : Test)
{
outerClass = newOuterClass;
}
var getNumber = function()
{
return outerClass.number;
}
}
}
var test = new Test();
var someNumber = test.innerTest.getNumber();
I don’t see the example that you gave as being a real world situation, so I am just assuming in my answer that you created that example for arguments sake.