Прежде всего, через свои поиски я понял, что это было задано тысячу раз раньше, извините, но у меня возникли проблемы с интерпретацией ответов. Я очень новичок в ActionScript 3 и только начинающий программист в целом.TypeError: Ошибка # 1006: значение не является функцией - что я делаю неправильно?
Так что я программирую простую игру, где некоторые шары движутся и ускоряются вокруг. Однако всякий раз, когда я вызываю свою функцию проверки столкновений (isWithin), она дает ошибку № 1006: Значение не является функцией. Я вызываю или объявляю функцию неправильно?
import flash.ui.Keyboard;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.text.TextField;
import flash.text.TextFormat;
// add the event listeners
PlayerBall.addEventListener(Event.ENTER_FRAME, update);
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
// this array holds references to all the keys
var keys:Array = [];
var xSpeed1:Number = 0;
var ySpeed1:Number = 0;
var xSpeed2:Number = 0;
var ySpeed2:Number = 0;
var hasFlag:int = 0;
var collide:Boolean = false;
function isWithin(object1:Object, object2:Object, barrier:Number):Boolean
{
var distance:Number = Math.sqrt((object1.x - object2.x)(object1.x - object2.x) + (object1.y - object2.y)(object1.y - object2.y));
if(distance <= barrier)
{
return(true);
}
else
{
return(false);
}
}
collide = isWithin(PlayerBall, PlayerBall2, PlayerBall.width);
trace(collide);
function update(e:Event):void
{
// GETTING KEYBOARD INPUT FOR FRAME
if(keys[Keyboard.UP])
{
ySpeed1 = ySpeed1 < -5 ? ySpeed1 : ySpeed1 - .3;
}
if(keys[Keyboard.DOWN])
{
ySpeed1 = ySpeed1 > 5 ? ySpeed1 : ySpeed1 + .3;
}
if(!(keys[Keyboard.UP]) && !(keys[Keyboard.DOWN]))
{
ySpeed1 = ySpeed1 > 0 ? ySpeed1 - .2 : ySpeed1 + .2;
}
if(keys[Keyboard.RIGHT])
{
xSpeed1 = xSpeed1 > 5 ? xSpeed1 : xSpeed1 + .3;
}
if(keys[Keyboard.LEFT])
{
xSpeed1 = xSpeed1 < -5 ? xSpeed1 : xSpeed1 - .3;
}
if(!(keys[Keyboard.RIGHT]) && !(keys[Keyboard.LEFT]))
{
xSpeed1 = xSpeed1 > 0 ? xSpeed1 - .2 : xSpeed1 + .2;
}
if(keys[Keyboard.W])
{
ySpeed2 = ySpeed2 < -5 ? ySpeed2 : ySpeed2 - .3;
}
if(keys[Keyboard.S])
{
ySpeed2 = ySpeed2 > 5 ? ySpeed2 : ySpeed2 + .3;
}
if(!(keys[Keyboard.W]) && !(keys[Keyboard.S]))
{
ySpeed2 = ySpeed2 > 0 ? ySpeed2 - .2 : ySpeed2 + .2;
}
if(keys[Keyboard.D])
{
xSpeed2 = xSpeed2 > 5 ? xSpeed2 : xSpeed2 + .3;
}
if(keys[Keyboard.A])
{
xSpeed2 = xSpeed2 < -5 ? xSpeed2 : xSpeed2 - .3;
}
if(!(keys[Keyboard.A]) && !(keys[Keyboard.D]))
{
xSpeed2 = xSpeed2 > 0 ? xSpeed2 - .2 : xSpeed2 + .2;
}
// MOVEMENT
PlayerBall.x += xSpeed1;
PlayerBall.y += ySpeed1;
PlayerBall2.x += xSpeed2;
PlayerBall2.y += ySpeed2;
if(hasFlag == 1)
{
flag.x = PlayerBall.x;
flag.y = PlayerBall.y;
}
if(hasFlag == 2)
{
flag.x = PlayerBall2.x;
flag.y = PlayerBall2.y
}
// COLLISION CHECKING
collide = isWithin(PlayerBall, flag, PlayerBall.width/2 + flag.width/2);
if(flag.visible && collide)
{
hasFlag = 1;
flag.visible = false;
flag.x = PlayerBall.x;
flag.y = PlayerBall.y;
}
collide = isWithin(PlayerBall2, flag, (PlayerBall2.width/2 + flag.width/2));
if(flag.visible && collide)
{
hasFlag = 2;
flag.visible = false;
flag.x = PlayerBall2.x;
flag.y = PlayerBall2.y;
}
}
function onKeyDown(e:KeyboardEvent):void
{
keys[e.keyCode] = true;
}
function onKeyUp(e:KeyboardEvent):void
{
keys[e.keyCode] = false;
}
Вау, я чувствую себя идиотом. Это то, что я получаю от обучения программированию на TI-Basic, где этот вид синтаксиса действительно работает. Огромное спасибо! –