Во-первых, давайте рассмотрим ваши ошибки.
new "B"+i();
В лучшем случае , что означает вызов номера i как функции и добавление результата к«B» как String .Но даже new "B1" () - это не то же самое, что new B1 () .На самом деле существует метод getDefinitionByName (..) , который позволяет обращаться к классу через его имя, но я не рекомендую использовать его, потому что это сложная тема.
var scene[i]:MovieClip
Вы просто не можете определить переменные scene1 , scene2 и т. Д. Таким образом.Самая близкая вещь, которую вы действительно можете придумать, - это квадратная скобка: this ["scene" + i] = ... .
addChild("scene"+i);
Аргумент должен быть DisplayObject экземпляр, а не String .
for (...)
{
...
function onRollOverEvent(e:MouseEvent)
...
}
Не определять функции внутри других функций или циклов.
scene[i].width = 20.9;
scene[i].height = 20;
К концу цикла i будет равно 5 , так что, как вы думаете, к чему относится такая запись?
Тогда решение.
Когда вы придетечтобы масштабировать ваше рабочее решение на несколько экземпляров, вы должны идти алгоритмически.Циклы и Массив s ваши друзья.
// Lets devise a list of classes and (x,y) coordinates.
var Designs:Array = [
null, // the 0-th element
{id:B1, x:170, y:230},
{id:B2, x:285, y:250},
];
for (var i:int = 1; i < Design.length; i++)
{
// Retrieve a record for the future object.
var aDesign:Object = Designs[i];
// Get a reference to the object's class.
var aClass:Class = aDesign.id;
// Create the object. Yes, you CAN omit () with
// the "new" operator if there are no mandatory arguments.
var aThing:Movieclip = new aClass;
// Set coordinates from the design record.
aThing.x = aDesign.x;
aThing.y = aDesign.y;
// Add to the display list.
addChild(aThing);
// Subscribe the event handlers.
aThing.addEventListener(MouseEvent.MOUSE_OVER, onOver);
aThing.addEventListener(MouseEvent.MOUSE_OUT, onOut);
// Save the object's reference for the later use.
// If you'd need to address, say, 3rd object,
// you do it as following:
// Designs[3].instance
aDesign.instance = aThing;
}
function onOver(e:MouseEvent):void
{
// You subscribed all of the objects to this one event handler.
// This is the correct way to learn, which one of the objects
// is under the mouse and is dispatching the said event.
var aThing:MovieClip = e.currentTarget as MovieClip;
// Change the object's size.
aThing.width = 26;
aThing.height = 25;
}
function onOut(e:MouseEvent):void
{
// Get the source of the dispatched event.
var aThing:MovieClip = e.currentTarget as MovieClip;
// Change the object's size.
aThing.width = 21;
aThing.height = 20;
}