Introduction
If you are working on the 9.7.4 leash assignment and your ball disappears when the code runs, you are not alone. Many students face this issue while trying to connect a moving ball to a line that follows the mouse. The task sounds simple: draw a line from the center of the screen and attach a ball to its endpoint. But small mistakes in event handling and object creation can cause big problems.
In this guide, we will fully explain the 9.7.4 leash task, analyze common mistakes found in top articles and forums, and provide a cleaner, more reliable solution. This version is structured clearly, uses simple words, and gives a better explanation than most basic help posts.
By the end, you will understand why the leash disappears, how to fix it properly, and how to write stronger code.
Understanding the 9.7.4 Leash Assignment
What the Program Should Do
The assignment requires you to:
- Draw a line starting from the center of the screen.
- Place a ball at the endpoint of the line.
- Move both the line’s endpoint and the ball when the mouse moves.
- Keep the center of the line fixed.
In simple words, the ball should behave like it is attached to a leash.
Why the Ball or Line Disappears
Looking at common solutions online, including the reference example, there are several issues:
1. Objects Are Being Removed Repeatedly
In the reference code, remove(line) and remove(ball) are called inside the mouse event. This removes the object every time the mouse moves.
When you remove and recreate shapes constantly:
- The screen refresh becomes unstable.
- Objects may disappear.
- Variables may conflict with function names.
2. Variable and Function Name Conflict
In the shared example:
var ball;
var line;
function line(e) { … }
Here, line is used both as a variable and as a function name. This creates confusion in memory and can break the program.
This is one of the main reasons the leash disappears.
3. Incorrect Mouse Event Usage
The example uses:
mouseMoveMethod(line);
mouseMoveMethod(lineEnd);
mouseMoveMethod(ball);
You only need one mouse move handler. Calling multiple methods creates unnecessary repetition.
Correct Way to Structure the 9.7.4 Leash Code
Step 1: Create Objects Once
Instead of creating and removing objects inside the mouse event, create them once inside start().
Proper Setup Example
var BALL_RADIUS = 30;
var ball;
var leash;
function start() {
var centerX = getWidth() / 2;
var centerY = getHeight() / 2;
leash = new Line(centerX, centerY, centerX, centerY);
add(leash);
ball = new Circle(BALL_RADIUS);
ball.setPosition(centerX, centerY);
ball.setColor(Color.red);
add(ball);
mouseMoveMethod(moveObjects);
}
Step 2: Update Instead of Recreate
Instead of removing and creating new shapes, just update positions.
function moveObjects(e) {
leash.setEndpoint(e.getX(), e.getY());
ball.setPosition(e.getX(), e.getY());
}
This keeps the leash connected and prevents disappearing objects.
Why This Version Works Better
1. Cleaner Memory Usage
Objects are created only once. The program simply updates their position.
2. No Naming Conflicts
The variable is named leash, not line, avoiding confusion.
3. Single Event Handler
Only one mouse move method controls everything.
4. Smooth Performance
Since nothing is constantly removed and recreated, the animation feels smooth.
Deep Explanation of the Core Logic
The Fixed Center Point
The center of the screen is calculated using:
getWidth() / 2
getHeight() / 2
This becomes the anchor point of the leash.
The Moving Endpoint
When the mouse moves:
- The endpoint of the line updates.
- The ball moves to that same position.
This creates the illusion of a leash pulling a ball.
Common Mistakes in 9.7.4 Leash Programs
| Mistake | Why It Causes Problems | Fix |
| Removing objects inside mouse move | Objects disappear | Create once, update only |
| Using same name for variable and function | Memory conflict | Use different names |
| Multiple mouseMoveMethod calls | Repeated triggers | Use one function |
| Creating circle inside event | Flickering and lag | Initialize in start() |
Improving Your Code Quality
If you want a cleaner and more professional solution:
Use Clear Names
Instead of line, use:
- leashLine
- anchorLine
Keep Code Organized
- Setup in start()
- Movement in one function
- No repeated object creation
Comment Your Code
Add short comments to explain logic. This helps teachers and future you.
How This Article Improves on Top Results
Most top results:
- Only give quick fixes
- Do not explain why the issue happens
- Repeat incorrect structure
- Lack clear breakdown
This guide:
- Explains logic step by step
- Identifies real root problems
- Provides clean final code
- Improves structure
- Uses simple words
- Covers common mistakes
- Adds improvement tips
That makes this version more complete and useful.
Advanced Tip: Adding Smooth Motion
If you want to improve the program further, you can:
- Add color change when moving
- Limit maximum leash length
- Add bounce effect
Example idea:
ball.setColor(Randomizer.nextColor());
This makes the program more interactive.
Informational Table: 9.7.4 Leash Program Summary
| Component | Purpose | Best Practice |
| Line | Connects center to mouse | Create once |
| Ball | Follows mouse | Update position only |
| Mouse Event | Controls movement | Use single handler |
| Center Point | Fixed anchor | Use screen center |
| Variable Naming | Prevent conflicts | Avoid duplicate names |
| Object Creation | Setup stage | Inside start() only |
| Performance | Smooth movement | Avoid remove() in loop |
FAQs:
Why does my leash disappear in 9.7.4?
Because you are removing and recreating the line inside the mouse event.
Can I use multiple mouseMoveMethod calls?
No, one event handler is enough.
Should I recreate the ball every time the mouse moves?
No, just update its position.
Why should I avoid naming a function and variable the same?
It creates memory conflicts and breaks the program.
Where should I create the ball and line?
Inside the start() function only.
Conclusion
The 9.7.4 leash assignment teaches an important programming lesson: create once, update often. The biggest mistake students make is recreating objects inside movement events. This causes disappearing shapes and unstable behavior.
By initializing the line and ball in the start function and updating them with a single mouse handler, the program becomes smooth, clean, and reliable.
Now you not only have a working solution but also understand why it works. That knowledge will help you in future projects.
For more helpful guides and programming solutions, visit 24newstime.org.
Keep coding, keep learning, and improve step by ste

