У меня проблема с передачей переменных между классами.
У меня есть один класс с именем GlobeView.as
Внутри этого есть функция, предназначенная для добавления маркеров на глобус
GlobeView.as -
public function addAdventureMarker( latitude:Number, longitude:Number, name:String=null ):void
{
var marker:Marker = new Marker();
marker.name = name;
placeMarker( marker, latitude, longitude );
}
Эта функция создает новый экземпляр класса с именем Marker. В Marker.as есть функция, которая, помимо прочего, определяет цвет маркеров
Marker.as -
public function Marker()
{
super();
var frontMaterial:ColorMaterial = new ColorMaterial( 0xff7200, 1, true );
var backMaterial:ColorMaterial = new ColorMaterial( 0xff7200, 1, true );
var leftMaterial:ColorMaterial = new ColorMaterial( 0xff6100, 1, true );
var rightMaterial:ColorMaterial = new ColorMaterial( 0xff6100, 1, true );
var topMaterial:ColorMaterial = new ColorMaterial( 0xff4f00, 1, true );
var bottomMaterial:ColorMaterial = new ColorMaterial( 0xff4f00, 1, true );
var materials:MaterialsList = new MaterialsList( { front:frontMaterial, back:backMaterial, left:leftMaterial, right:rightMaterial, top:topMaterial, bottom:bottomMaterial } );
cube = new Cube( materials, width, depth, height );
cube.addEventListener( InteractiveScene3DEvent.OBJECT_OVER, onCubeOver, false, 0, true );
cube.addEventListener( InteractiveScene3DEvent.OBJECT_OUT, onCubeOut, false, 0, true );
cube.addEventListener( InteractiveScene3DEvent.OBJECT_CLICK, onCubeClick, false, 0, true );
cube.geometry.vertices[0].x -= 4;
cube.geometry.vertices[0].y += 4;
cube.geometry.vertices[1].x -= 4;
cube.geometry.vertices[1].y -= 4;
cube.geometry.vertices[2].x += 4;
cube.geometry.vertices[2].y += 4;
cube.geometry.vertices[3].x += 4;
cube.geometry.vertices[3].y -= 4;
addChild( cube );
cube.moveBackward( depth / 2 );
}
Я пытаюсь определить переменную в GlobeView.as.
например var markerColor: String;
Когда добавляется маркер, присвойте переменной значение
например,
{
var marker:Marker = new Marker();
marker.name = name;
markerColor = "red";
placeMarker( marker, latitude, longitude );
}
Затем добавьте оператор if в класс маркера
, например
public function Marker()
{
super();
if (markerColor=="red")
{
var frontMaterial:ColorMaterial = new ColorMaterial( 0xff7200, 1, true );
var backMaterial:ColorMaterial = new ColorMaterial( 0xff7200, 1, true );
var leftMaterial:ColorMaterial = new ColorMaterial( 0xff6100, 1, true );
var rightMaterial:ColorMaterial = new ColorMaterial( 0xff6100, 1, true );
var topMaterial:ColorMaterial = new ColorMaterial( 0xff4f00, 1, true );
var bottomMaterial:ColorMaterial = new ColorMaterial( 0xff4f00, 1, true );
}
Надеюсь, это имеет смысл - вероятно, сделало это намного сложнее, чем нужно